powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Размер столбцов в DataGrid
2 сообщений из 2, страница 1 из 1
Размер столбцов в DataGrid
    #32845891
crowler
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Уважаемые господа подскажите пожалуйста как можно сделать размер столбцов в датагриде динамически изменяющимся в зависимости от ширины самого датагрида? Заранее благодарю за ответ.
...
Рейтинг: 0 / 0
Размер столбцов в DataGrid
    #32845984
Фотография Лиман Артём
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Привет Донецку!
кидаю код, который написал оч. давно, но вроде работающий,
если чего не ясно спрашивай (там может чего лишнее есть, но нет времени прихорашивать)))
Код: 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.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
 Private Sub SearchableDataGrid_Resize(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Resize
        If Me.TableStyles.Count =  0  _
        Or DataSource Is Nothing Then Exit Sub
        Dim ts As DataGridTableStyle = Me.TableStyles( 0 )
        Dim colStyles As ArrayList = Me.GetVisibleColumns 'получение массива видимых колонок
        Dim ub% = colStyles.Count -  1 
        If ub = - 1  Then Exit Sub
      
        Dim colStyle As DataGridColumnStyle


        Dim delta% =  0 
        Select Case Me.BorderStyle
            Case BorderStyle.Fixed3D
                delta += SystemInformation.Border3DSize.Width *  2 
            Case BorderStyle.FixedSingle
                delta += SystemInformation.BorderSize.Width *  2 
        End Select
        If ts.RowHeadersVisible Then
            delta += ts.RowHeaderWidth +  2 
        End If
        delta += ub

        Dim w% = Me.Width - delta
        Dim totalWidth%
        Try
            Me.SuspendLayout()
            For i As Int32 =  0  To ub
                colStyle = colStyles(i)
                totalWidth += colStyle.Width
            Next

            For i As Int32 =  0  To ub
                colStyle = colStyles(i)
                colStyle.Width = colStyle.Width / (totalWidth) * w  
            Next
        Finally
            Me.ResumeLayout()
        End Try


    End Sub

 'создание массива видимых колонок
    Private Function GetVisibleColumns() As ArrayList
        Dim ret As New ArrayList
        Dim ts As DataGridTableStyle = Me.TableStyles( 0 )

        Dim dt As DataTable = Me.DataSource
        Dim ub% = ts.GridColumnStyles.Count -  1 
        For i As Int32 =  0  To ub
            If dt.Columns.Contains(ts.GridColumnStyles(i).MappingName) Then
                If ts.GridColumnStyles(i).Width <>  0  Then ret.Add(ts.GridColumnStyles(i))
            End If

            'ts.GridColumnStyles.Contains ( 
        Next
        Return ret
    End Function


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


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