在我的C#4.0应用程序中,我有一个DataGridView来显示一些数据。我希望列的大小相应的内容,所以我设置AutoSizeColumnsMode AllCellsExceptHeader。但我想限制列增长超过一定的价值。有一个MinimumWidth属性...但不幸的是没有MaximumWidth属性。DataGridView自动调整大小,但限制最大列大小
任何想法如何解决这个问题?
由于提前, 弗兰克
在我的C#4.0应用程序中,我有一个DataGridView来显示一些数据。我希望列的大小相应的内容,所以我设置AutoSizeColumnsMode AllCellsExceptHeader。但我想限制列增长超过一定的价值。有一个MinimumWidth属性...但不幸的是没有MaximumWidth属性。DataGridView自动调整大小,但限制最大列大小
任何想法如何解决这个问题?
由于提前, 弗兰克
我成功地做到这一点,是检查列宽度附加行之后,检查宽度,如果它的大小超过我最大,我设置的唯一途径它手动更改后的列AutoSizeMode到DataGridViewAutoSizeColumnMode.None
foreach(DataGridViewColumn c in myView.Columns)
if (c.Width > myMax)
{
c.AutoSizeMode = DataGridViewAutoSizeColumnMode.None;
c.Width = myMax;
}
当然,你需要在添加/更新/删除行,并再次做的程序重新设置AutoSizeColumnsMode到AllCellsExceptHeader。
我知道这是一个老问题,但我自己面对它,并得到了一个体面的(我想这是)解决方案;
' 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更改为您想要的任何最大值。
只是注意到这是一个C#的问题与vb.net的答案,抱歉'关于这一点。但你应该能够翻译。 :-) – Luke 2017-09-08 06:48:45