Top*_*her 1 vb.net datagridview doublebuffered .net-4.0 visual-studio-2010
在 Windows 7 计算机上尝试隐藏 DataGridView 的 44 列需要 44 秒。我怎样才能加快速度?我使用了以下代码:
'Turn on DataGridView.DoubleBuffered
Dim myType As Type = GetType(DataGridView)
myType.InvokeMember( _
"DoubleBuffered", _
BindingFlags.NonPublic Or BindingFlags.Instance Or BindingFlags.SetProperty, _
Nothing, DataGridView1, New Object() {True})
'hide the following columns
Me.SuspendLayout()
For Each col As DataGridViewColumn In DataGridView1.Columns
col.Visible = False
Next
Me.ResumeLayout()
Run Code Online (Sandbox Code Playgroud)
将您的循环更改为此,因为这将遍历列并使它们不可见......为了我的测试只是为了确保,我添加了 250 列并在大约一秒钟内使用此循环将它们全部隐藏......
For i As Integer = 0 To DataGridView1.ColumnCount - 1
DataGridView1.Columns(i).Visible = False
End Sub
Run Code Online (Sandbox Code Playgroud)
如果您选择这样做,这将删除所有列...
For i As Integer = 0 To DataGridView1.ColumnCount - 1
DataGridView1.Columns.Remove(DataGridView1.Columns(0).Name)
Next
Run Code Online (Sandbox Code Playgroud)
这是另一种方式......
DataGridView1.Columns.Clear()
Run Code Online (Sandbox Code Playgroud)
至于您对 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
Run Code Online (Sandbox Code Playgroud)
如果您选择这样做,您可以保留上面的代码,这将有助于您的表单和位于其上的组件的整体。这是我最喜欢的数据网格视图,以避免任何闪烁,包括滚动条......
1 把它放在表格的最顶部......
Imports System.Reflection
Run Code Online (Sandbox Code Playgroud)2 将此添加到您的表单加载...
BufferMethod.DoubleBuffered(DataGridView1, True)
Run Code Online (Sandbox Code Playgroud)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
Run Code Online (Sandbox Code Playgroud)希望你喜欢!
问候,
程序员先生
| 归档时间: |
|
| 查看次数: |
21320 次 |
| 最近记录: |