找了好久没有vb.net版本的开启双缓冲的实例,,假期有时间搞一下
代码片段
在这里插入代码片
'双缓冲片段
Private Sub DoubleBuffer()
PrepareListView(dbListView1)
Dim thread1 As New Thread(CType(Sub()
For i As Integer = 0 To count - 1
dbListView1.Invoke(CType(Sub()
dbListView1.Items.Add(New ListViewItem(New String() {i.ToString(), String.Format("This is No.{0} item", i.ToString())}))
End Sub, MethodInvoker))
Next
End Sub, ThreadStart))
thread1.Start()
End Sub
Friend Class NativeInterop
Public Const WM_PRINTCLIENT As Integer = &H318
Public Const PRF_CLIENT As Integer = &H4
End Class
'DBListView
Public Class DBListView
Inherits ListView
Public Sub New()
'开启被保护的属性
SetStyle(ControlStyles.OptimizedDoubleBuffer Or ControlStyles.AllPaintingInWmPaint, True)
End Sub
Protected Overrides Sub OnPaint(ByVal e As PaintEventArgs)
If GetStyle(ControlStyles.UserPaint) Then
Dim m As Message = New Message()
m.HWnd = Handle
m.Msg = NativeInterop.WM_PRINTCLIENT
m.WParam = e.Graphics.GetHdc()
m.LParam = CType(NativeInterop.PRF_CLIENT, IntPtr)
DefWndProc(m)
e.Graphics.ReleaseHdc(m.WParam)
End If
MyBase.OnPaint(e)
End Sub
End Class
最后附上代码:
上传资料审核中
[添加链接描述]源码下载链接
https://download.youkuaiyun.com/download/sinat_35472054/85072766?spm=1001.2014.3001.5501