笔者在开发中发现,当调整窗体中的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