Измените свой цикл на этот, так как он будет перебирать столбцы и делать их невидимыми... Для моего теста, чтобы убедиться, я добавил 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()
Что касается двойной буферизации вашего 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 Поместите этот новый класс в самый конец вашего другого класса (под End Class)
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
person
zaggler
schedule
05.03.2013