筆者在開發中發現,當調整窗體中的Tabcontrol控件大小時,如果tabcontrol控件中包含Listbox、DatagridView等較多控件時,易出現Tabcontrol控件不停閃爍的問題,嚴重影響應用程式的美觀。
經過搜尋和測試,發現解決辦法是在tabcontrol控件所在的窗體添加如下的代碼,即可徹底解決Tabcontrol控件的閃爍:
Dim AntiFlicker As Boolean = False
Protected Overrides ReadOnly Property CreateParams() As System.Windows.Forms.CreateParams
Get
Dim cp As CreateParams = MyBase.CreateParams
If AntiFlicker Then
cp.ExStyle = cp.ExStyle Or &H2000000 'Turn on WS_EX_COMPOSITED
End If
Return cp
End Get
End Property
'開始調整大小時啟用抗閃爍
Private Sub Form2_ResizeBegin(sender As Object, e As System.EventArgs) Handles Me.ResizeBegin
AntiFlicker = True
Me.MaximizeBox = True
End Sub
'調整完畢時關閉抗閃爍
Private Sub Form2_ResizeEnd(sender As Object, e As System.EventArgs) Handles Me.ResizeEnd
AntiFlicker = False
Me.MaximizeBox = True
End Sub