在我的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