Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / DataGrid WordWrap + autosize rows / 8 сообщений из 8, страница 1 из 1
22.07.2004, 14:05
    #32616915
sergio_bc
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DataGrid WordWrap + autosize rows
Как сделать так, чтобы высота строки грида менялась в зависимости от текста, а текст размещался на нескольких строках в одной ячейке (WordWrap) причем для всех строк (вне зависимости от выбранной ячейки).
Читал Syncfusion FAQ , но оно помоему не катит.
...
Рейтинг: 0 / 0
22.07.2004, 15:43
    #32617215
кузя
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DataGrid WordWrap + autosize rows
как раз катит.
нужно создать свой стиль на базе System.Windows.Forms.DataGridTextBoxColumn, в котором переопределить метод
Код: plaintext
1.
2.
3.
4.
protected override int GetMinimumHeight()
{
//...
  return(this.StringHeight(Convert.ToString(GetColumnValueAtRow(curencyManager, this.currentIteration++))));
}
пытливые умы нашли :-), что этот метод вызывается последовательно для каждого row из datatable (или что там вместо нее использутся)

переменная currentIteration - внутренняя переменная, подсчтывающая количество вызовов метода (общее кол-во равно curencyManager.Count)
ее нужно установить в 0 при смене источника и/или при достижении макс значения (curencyManager.Count)

вызовы проводится во время установки источника данных грида

так можно посчитать высоту колонки
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
private int StringHeight(string s)
{	try
	{	System.Drawing.Graphics g=this.TextBox.CreateGraphics();
		return((int)g.MeasureString(s, this.TextBox.Font).Height+ 2 );
	}
	catch
	{	return(base.GetMinimumHeight());
	}
}
грид сам выберет наибольшую высоту, если таких колонок несколько в гриде
...
Рейтинг: 0 / 0
22.07.2004, 16:52
    #32617445
sergio_bc
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DataGrid WordWrap + autosize rows
Но мне необходимо немного другое. Я например переопределяю DataGridTextBoxColumn и вставляю туда вместо TextBox, RichTextBox.(Ну просто например). И устанавливаю свойство RichTextBox.WordWrap = true.
Когда я редактирую поле таблицы, оно переносит по словам. Но когда я выхожу из ячейки(теряю фокус этой ячейки).Введенный текст выводится в виде одной строки.(т.е не переноситься по словам). В общем необходимо сделать так чтобы когда я не редактирую ячейку, а в ней текста больше чем область видимости, то во первых текст переносился по словам, а во вторых автоматически расширялась высота ячейки (так чтобы был виден весь текст).
Вот такая вот проблема.

Я приложил файл. Две картинки 30килобайт. Можете посмотреть. Чтобы было более понятно.
...
Рейтинг: 0 / 0
22.07.2004, 17:40
    #32617574
кузя
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DataGrid WordWrap + autosize rows
sergio_bc... то во первых текст переносился по словам
это не проблема. у базового textbox'а поставь св-во multiline=true

sergio_bc...автоматически расширялась высота ячейки (так чтобы был виден весь текст).
здесь сдаюсь ... не пробовал (вернее пробовал только через повторный SetDataBinding)
...
Рейтинг: 0 / 0
22.07.2004, 18:08
    #32617640
sergio_bc
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DataGrid WordWrap + autosize rows
Нет. Дело в том что у базового TextBox-а, Я ставлю WordWrap = true, Это да. Но на самом деле. Я вот только что выяснил что Этот базовый TextBox это то что отображается при редоктировании а когда просматриваеш DataGrid он весь текст выводит в одну строчку потому что на самом деле в классе DataGridTextBoxColumn есть такой метод PaintText - который необходимо переопределить чтобы видеть текст в нужном виде. Но дело в том что этот метод не хочет переопределятся видимо он у них final или еще как нибудь определен.... Вот Такая вот глобальная проблема. Нужно чтоле свой DataGrid писать или .....

Помогите??? Как быть.
...
Рейтинг: 0 / 0
22.07.2004, 18:59
    #32617713
кузя
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DataGrid WordWrap + autosize rows
высоту ячейки больше, чем вернул в GetMinimumHeight, определить невозможно(???). как добраться до dblclick по разделителю (кагда и вызывается еще раз GetMinimumHeight для автоматической настройки высоты ячеек в строке) - тот еще вопрос.
вот сколько вопросов :-(

Ответ, как правило, во всех форумах такой - возьмите грид сторонних прозводителей (и далее скрытая реклама ComponentOne и пр.) и будет вам счастье. Обидно...
...
Рейтинг: 0 / 0
22.07.2004, 22:06
    #32617832
Sa
Sa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DataGrid WordWrap + autosize rows
Кузя
Ответ, как правило, во всех форумах такой - возьмите грид сторонних прозводителей (и далее скрытая реклама ComponentOne и пр.) и будет вам счастье. Обидно...

Либо начать программировать на NETFrameWork 2.0 beta

Код: plaintext
 uid  =  S a
...
Рейтинг: 0 / 0
22.07.2004, 22:31
    #32617837
кузя
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DataGrid WordWrap + autosize rows
Дык, не вопрос.

Сам то уже с полгода как перевёл все свои проекты на 2.0 (поначалу еще fw 1.2). Другое дело, когда вопрос ставят по 1.1 - иногда так и тянет ответить, что пора переходить на новую версию. И то там хорошо и это появилось и те баги исчезли.

Для новых проектов - это ОК (пропагандой чего иногда и сам грешу), а вот для тех, которые уже у заказчиков под 1.1 крутятся - тут уж не до жиру - результат нужно выдать на гора сейчас, а версию framework ставить - только release (beta, естесственно, никого не устраивает).
...
Рейтинг: 0 / 0
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / DataGrid WordWrap + autosize rows / 8 сообщений из 8, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]