Подтвердить что ты не робот

DataGridView Autosize, но ограничивает максимальный размер столбца

в моем приложении С# 4.0, у меня есть DataGridView для отображения некоторых данных. Я хочу, чтобы размер столбцов соответствовал содержимому, поэтому я устанавливаю AutoSizeColumnsMode в AllCellsExceptHeader. Но я хочу ограничить количество столбцов выше определенного значения. Существует свойство MinimumWidth... но, к сожалению, нет свойства MaximumWidth.

Есть идеи, как это решить?

Спасибо заранее, Франк

4b9b3361

Ответ 1

Единственный способ, которым я это сделал, - проверить ширину столбцов после добавления к нему строк, проверить ширину, и если размер превышает мой максимум, я устанавливаю его вручную после изменения столбцов AutoSizeMode в DataGridViewAutoSizeColumnMode.None

      foreach(DataGridViewColumn c in myView.Columns)
            if (c.Width > myMax)
            {
                c.AutoSizeMode = DataGridViewAutoSizeColumnMode.None;
                c.Width = myMax;
            }

Естественно, вам нужно снова установить AutoSizeColumnsMode в AllCellsExceptHeader, когда вы добавляете/обновляете/удаляете строки и выполняете процедуру еще раз.

Ответ 2

Я знаю, что это более старая проблема, но я столкнулся с ней сам и получил достойное решение (я думаю, это);

' Eventhandler 
Private Sub DataGridView1_ColumnWidthChanged(sender As Object, e As DataGridViewColumnEventArgs)

// If my Grid refreshes this event doesnt work properly so I stop it from firing
    If isRefreshing Then Exit Sub

    Dim col As DataGridViewColumn = e.Column
    If col.AutoSizeMode = DataGridViewAutoSizeColumnMode.None Then //optional
        Dim isWidth As Integer = col.Width
        Dim prefWidth As Integer = col.GetPreferredWidth(DataGridViewAutoSizeColumnMode.AllCellsExceptHeader, True)
        If isWidth > prefWidth Then col.Width = prefWidth
    End If
End Sub

В этом случае моя MaxWidth является Prefferred Width. Вы можете изменить prefWidth на любой желаемый максимум.