VB 中的 DataGridView 卡顿

Stuttering DataGridView in VB

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

这是我提出的解决方案:

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

编辑:这是 GIF 我的 DGV 是如何结结巴巴的

数据table被命名为Tbl_Sample

下面是我如何将数据行插入数据 table。它使用 Flatfile 数据库(.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.DataSource = Tbl_Sample

将 table 设置为 DGV 的数据源

数据table 创建为关注

 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

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

解决方案linkhere

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