你的循環改成這樣,因爲這將通過列循環,使他們不可見......對於我的測試,以確保公正,我加了250列,把它們藏在所有有關與此環的第二...
For i As Integer = 0 To DataGridView1.ColumnCount - 1
DataGridView1.Columns(i).Visible = False
End Sub
,如果你選擇這樣做,這將刪除所有列...
For i As Integer = 0 To DataGridView1.ColumnCount - 1
DataGridView1.Columns.Remove(DataGridView1.Columns(0).Name)
Next
這裏是另一種方式...
DataGridView1.Columns.Clear()
至於你double緩衝你的datagridview,雙緩衝窗體,因爲它會減少發生在該窗體上的任何閃爍。 這裏有兩個選擇:1 - 在屬性窗口中爲你的窗體設置雙緩衝區或2 - 初始化另一個子窗口以雙緩衝它...
這裏是你的窗體的雙緩衝代碼...直接放這個在你的類名...
Public Sub New()
MyBase.New()
MyBase.DoubleBuffered = True
' This call is required by the designer.
InitializeComponent()
' Add any initialization after the InitializeComponent() call.
End Sub
你可以,如果你選擇這樣做留下上面的代碼,這將有助於整體的形式和坐在其上的部件。這是我最喜歡的,雖然對於一個DataGridView,以避免任何閃爍什麼那麼包括滾動條...
1把這個在您的窗體的最頂端...
Imports System.Reflection
2添加到您的窗體加載...
BufferMethod.DoubleBuffered(DataGridView1, True)
3滴在你的其他類的最後這個新類(末級下面)
Public NotInheritable Class BufferMethod
Public Shared Sub DoubleBuffered(dgView As DataGridView, Setting As Boolean)
Dim dgvType As Type = dgView.[GetType]()
Dim propInfo As PropertyInfo = dgvType.GetProperty("DoubleBuffered", BindingFlags.Instance Or BindingFlags.NonPublic)
propInfo.SetValue(dgView, Setting, Nothing)
End Sub
End Class
希望你喜歡!
問候,
MrCodexer
有沒有其他的事情與你沒有展示的gridview相關。例如,你是否需要重新查詢數據源?這可能會減慢你的迴應,但只是隱藏列不應該。 – jason 2013-03-04 19:00:37
你爲什麼隱藏所有的列?你不能隱藏網格或解除綁定數據源嗎? – Jaxedin 2013-03-05 01:38:06