DataGridView Autosize, но ограничивает максимальный размер столбца
в моем приложении С# 4.0, у меня есть DataGridView для отображения некоторых данных. Я хочу, чтобы размер столбцов соответствовал содержимому, поэтому я устанавливаю AutoSizeColumnsMode в AllCellsExceptHeader. Но я хочу ограничить количество столбцов выше определенного значения. Существует свойство MinimumWidth... но, к сожалению, нет свойства MaximumWidth.
Есть идеи, как это решить?
Спасибо заранее,
Франк
Ответы
Ответ 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 на любой желаемый максимум.