Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / DataGridColumnStyle.GetMinimumHeight / 8 сообщений из 8, страница 1 из 1
12.11.2004, 13:44
    #32779608
Лиман Артём
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DataGridColumnStyle.GetMinimumHeight
наследуюсь от стиля и перекрываю метод GetMinimumHeight для того что бы контролировать высоту строки в завизимости от ее значения, тоесть, если значение не помещается в одну строку, то хочу увеличить высоту. Но тут проблема - не знаю как определить номер строки (а соответсвенно и значение) строки, так как по аналогии с методом Paint() rowNum ко мне не приходит.
Может кто знает как это побороть...
...
Рейтинг: 0 / 0
12.11.2004, 13:56
    #32779653
кузя
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DataGridColumnStyle.GetMinimumHeight
метод будет вызываться последовательно столько раз, сколько строк в datasource/datamember. поэтому нужно считать внутри метода и по CurrencyManager (тоже самому выбирать из BindingContext грида) запрашивать DataRow для подсчета.
---
зы
можно по полю dataGridRows грида установить высоту строчки через св-во Height
...
Рейтинг: 0 / 0
12.11.2004, 14:02
    #32779665
Лиман Артём
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DataGridColumnStyle.GetMinimumHeight
кузя
зы
можно по полю dataGridRows грида установить высоту строчки через св-во Height
что-то я не вижу такого поля в гриде
...
Рейтинг: 0 / 0
12.11.2004, 14:04
    #32779672
кузя
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DataGridColumnStyle.GetMinimumHeight
оно private - через reflection. поищи по этому форуму - уже обсуждали.
...
Рейтинг: 0 / 0
12.11.2004, 18:02
    #32780478
Лиман Артём
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DataGridColumnStyle.GetMinimumHeight
сделал вот так, корректно ли написано....?
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
Public Class MyGridColumnStyle
 ....
 Dim bufferGraphics As Graphics
    Dim bufferSource As CurrencyManager
    Dim rowPos% =  0 

    'определение высоты строки
    Protected Overrides Function GetMinimumHeight() As Integer
        
        'если контроль отключен - возвращаем базовое значение
        If _fitText = False Then Return MyBase.GetMinimumHeight
        Try
            'иначе - получаем исочник данных
            If bufferSource Is Nothing Then
                bufferSource = Me.DataGridTableStyle.DataGrid.BindingContext(Me.DataGridTableStyle.DataGrid.DataSource, DataGridTableStyle.DataGrid.DataMember)
            End If
            'получаем значение текущее столбца
            Dim Value As String = Me.GetColumnValueAtRow(bufferSource, rowPos).ToString
            'получаем объект контекста графики 
            Dim col As New System.Drawing.Text.InstalledFontCollection
            If bufferGraphics Is Nothing Then
                bufferGraphics = Me.DataGridTableStyle.DataGrid.CreateGraphics
            End If
            'вычисляем высоту строки
            Dim h As Single = bufferGraphics.MeasureString(Value, _font, Me.Width).Height
            Return CInt(h)
        Catch ex As Exception
            Throw ex
        Finally
            'если достигли конца освобождаем все временные ресурсы
            If bufferSource.Count -  1  = rowPos Then
                bufferSource = Nothing
                bufferGraphics.Dispose()
                bufferGraphics = Nothing
                rowPos =  0 
                ' MsgBox(1)
            End If
            rowPos +=  1 
        End Try



    End Function
...
Рейтинг: 0 / 0
12.11.2004, 18:04
    #32780483
Лиман Артём
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DataGridColumnStyle.GetMinimumHeight
на Dim col As New System.Drawing.Text.InstalledFontCollection не обращать внимания...
...
Рейтинг: 0 / 0
12.11.2004, 20:41
    #32780630
кузя
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DataGridColumnStyle.GetMinimumHeight
авторсделал вот таксверял со своим кодом - практически близнецы :)

ps: может так лучше ?
Код: plaintext
1.
2.
3.
4.
5.
If bufferSource.Count -  1  = rowPos Then
  ...
  rowPos =  0 
Else
  rowPos +=  1 
End If
...
Рейтинг: 0 / 0
13.11.2004, 16:59
    #32781008
Лиман Артём
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DataGridColumnStyle.GetMinimumHeight
кузясверял со своим кодом - практически близнецы :)
это радует
кузя
ps: может так лучше ?
Код: plaintext
1.
2.
3.
4.
5.
If bufferSource.Count -  1  = rowPos Then
  ...
  rowPos =  0 
Else
  rowPos +=  1 
End If


да, я вообщето после кое-какой отладки поменял на
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
            rowPos +=  1 
            'если достигли конца освобождаем все временные ресурсы
            If bufferSource.Count = rowPos Then
                ....
                rowPos =  0 
            End If

практически тоже
...
Рейтинг: 0 / 0
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / DataGridColumnStyle.GetMinimumHeight / 8 сообщений из 8, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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