Stuttering DataGridView in VB



我有一个绑定到具有数百行的数据表的DataGridView,该数据库是写入txt文件的简单平面文件数据库。每当我滚动到底部时,DGV 就会开始卡顿。我正在考虑解决方案,但找不到编码的方法

以下是我建议的解决方案:

  • 使用分页可减少要呈现的行数。这是一个类似的解决方案,但他们使用的是sql
  • 使用我以前从未接触过的双缓冲器。我试过做 DGV.doublebuffer = true,但它说 DGV 受到保护

非常感谢对我的问题的任何帮助或澄清

编辑:这是我的DGV如何站立的GIF的

数据表名为Tbl_Sample

以下是我将数据行插入数据表的方法。它使用平面文件数据库(.txt文件)上的System.IO获取数据,拆分每一行,然后将其作为行发送到InputTbl

Public Sub Update_Table(InputTbl As DataTable, InputFile As String)
InputTbl.Rows.Clear()
Dim lines() As String
Dim vals() As String
lines = File.ReadAllLines(InputFile)
For i = 0 To lines.Length - 1
vals = lines(i).ToString().Split("|")
Dim row(vals.Length - 1) As String
For j = 0 To vals.Length - 1
row(j) = vals(j).Trim()
Next j
InputTbl.Rows.Add(row)
Next i
End Sub

我通过以下方式将表设置为 DGV 的数据源DGV.DataSource = Tbl_Sample

数据表的创建方式如下

Public Sub Sample_Table()
'Method For creating database file
Create_DBFile("Sample.db")
Try
Tbl_Sample.Columns.Add("ID", Type.GetType("System.Int32"))
Tbl_Sample.Columns.Add("Name", Type.GetType("System.String"))
Tbl_Sample.Columns.Add("Username", Type.GetType("System.String"))
Tbl_Sample.Columns.Add("Account_Type", Type.GetType("System.String"))
Tbl_Sample.Columns.Add("Date", Type.GetType("System.String"))
Tbl_Sample.Columns.Add("Time", Type.GetType("System.String"))
Catch ex As Exception
End Try
Update_Table(Tbl_Sample, "Sample.db") 'populate table
End Sub

我创建列的方式不是最好的。我只是从我的旧程序中复制了它

此处为解决方案链接

Imports System.Reflection
Public Sub EnableDoubleBuffered(ByVal dgv As DataGridView)
Dim dgvType As Type = dgv.[GetType]()
Dim pi As PropertyInfo = dgvType.GetProperty("DoubleBuffered", _
BindingFlags.Instance Or BindingFlags.NonPublic)
pi.SetValue(dgv, True, Nothing)
End Sub
Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
EnableDoubleBuffered(MyDataGridView, True)
End Sub

最新更新