我有一個系結到數百行資料表的 DataGridView,資料庫是一個簡單的平面檔案資料庫,寫入 txt 檔案。每當我滾動到底部時,DGV 就會開始結結巴巴。我正在考慮解決方案,但找不到編碼方法
這是我提出的解決方案:
- 使用分頁來減少正在呈現的行數。這是一個類似的解決方案,但他們使用的是 sql
- 使用我以前從未接觸過的雙緩沖。我試過做 DGV.doublebuffer = true 但它說 DGV 受到保護
非常感謝對我的問題的任何幫助或澄清
編輯:這是我的 DGV 口吃的GIF
資料表名為Tbl_Sample
這是我將資料行插入資料表的方法。System.IO它使用平面檔案資料庫(.txt 檔案)獲取資料,拆分每一行,然后將其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
資料表創建為 Follow
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
我創建列的方式不是最好的。我剛剛從我的舊程式中復制了它
uj5u.com熱心網友回復:
解決方案鏈接在這里
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
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/455659.html
上一篇:如何將列添加到存盤為VB.NETXMLLiteral的MSOfficeExcel電子表格
下一篇:多個記憶體映射檔案是否存在錯誤?
