recursive SuspendDrawing and ResumeDrawing
This commit is contained in:
@@ -1,4 +1,4 @@
|
|||||||
Imports System.Runtime.CompilerServices
|
Imports System.Runtime.CompilerServices
|
||||||
Imports System.Windows.Forms
|
Imports System.Windows.Forms
|
||||||
|
|
||||||
Namespace Utils
|
Namespace Utils
|
||||||
@@ -6,10 +6,19 @@ Namespace Utils
|
|||||||
Public Module DrawingControl
|
Public Module DrawingControl
|
||||||
|
|
||||||
Private Const WM_SETREDRAW = 11
|
Private Const WM_SETREDRAW = 11
|
||||||
|
Private ReadOnly dicSuspendCount As New Dictionary(Of IntPtr, Integer)
|
||||||
|
|
||||||
<Extension>
|
<Extension>
|
||||||
Public Sub SuspendDrawing(control As Control)
|
Public Sub SuspendDrawing(control As Control)
|
||||||
SendMessage(control.Handle, WM_SETREDRAW, False, 0)
|
If Not dicSuspendCount.ContainsKey(control.Handle) Then
|
||||||
|
dicSuspendCount.Add(control.Handle, 1)
|
||||||
|
Else
|
||||||
|
dicSuspendCount(control.Handle) += 1
|
||||||
|
End If
|
||||||
|
|
||||||
|
If dicSuspendCount(control.Handle) = 1 Then
|
||||||
|
SendMessage(control.Handle, WM_SETREDRAW, False, 0)
|
||||||
|
End If
|
||||||
End Sub
|
End Sub
|
||||||
|
|
||||||
<Extension>
|
<Extension>
|
||||||
@@ -19,8 +28,19 @@ Namespace Utils
|
|||||||
|
|
||||||
<Extension>
|
<Extension>
|
||||||
Public Sub ResumeDrawing(control As Control, redraw As Boolean)
|
Public Sub ResumeDrawing(control As Control, redraw As Boolean)
|
||||||
SendMessage(control.Handle, WM_SETREDRAW, True, 0)
|
Dim doRedraw As Boolean = True
|
||||||
If redraw Then control.Refresh()
|
|
||||||
|
If dicSuspendCount.ContainsKey(control.Handle) Then
|
||||||
|
dicSuspendCount(control.Handle) -= 1
|
||||||
|
If dicSuspendCount(control.Handle) >= 1 Then
|
||||||
|
doRedraw = False
|
||||||
|
End If
|
||||||
|
End If
|
||||||
|
|
||||||
|
If doRedraw Then
|
||||||
|
SendMessage(control.Handle, WM_SETREDRAW, True, 0)
|
||||||
|
If redraw Then control.Refresh()
|
||||||
|
End If
|
||||||
End Sub
|
End Sub
|
||||||
|
|
||||||
End Module
|
End Module
|
||||||
|
|||||||
Reference in New Issue
Block a user