防止WinForm闪烁

一、起因

相信很多在用VS开发Winform的客户端程序的码农,都会碰到如题所示的问题。窗体在关闭或者打开时,总是会闪烁一下。对于我这种强迫症患者,看到这个闪来闪去,心里就不好。

随后在网上搜罗了一下,杂七杂八,你一言我一句,试遍了所有的方法,最终确定了以下方法,我试验后不再闪烁。

二、代码实现

网上的代码大部分都是用的C#,我将其换成了VB.net。将以下的代码放置于需要防止窗体闪烁的父窗体中

 1     Public Sub New()
 2         InitializeComponent()
 3         SetStyle(ControlStyles.UserPaint, True)
 4         SetStyle(ControlStyles.AllPaintingInWmPaint, True)
 5         SetStyle(ControlStyles.OptimizedDoubleBuffer, True)
 6     End Sub
 7 
 8     Protected Overrides ReadOnly Property CreateParams As CreateParams
 9         Get
10             Dim cp As CreateParams = MyBase.CreateParams
11             cp.ExStyle = cp.ExStyle Or &H2000000
12             Return cp
13         End Get
14     End Property
原文地址:https://www.cnblogs.com/alexywt/p/7488377.html