我用一个panel当容器,里面有好多控件,加载的时候一直闪烁。
借鉴网友的思路: 窗口初始化界面加入代码
this
.DoubleBuffered =
true
;
//设置本窗体
SetStyle(ControlStyles.UserPaint,
true
);
SetStyle(ControlStyles.AllPaintingInWmPaint,
true
);
// 禁止擦除背景.
SetStyle(ControlStyles.DoubleBuffer,
true
);
// 双缓冲
protected override CreateParams CreateParams
{
get { CreateParams paras = base.CreateParams; paras.ExStyle |= 0x02000000; return paras; } }
还是没有什么明显改善
第三个方法:
默认我把窗口所有控件全部隐藏,加载完成后显示。
private void XXX_Load(object sender, EventArgs e)
{
foreach (Control c in this.Controls)
c.Visible = false;
this.Shown += XXX_Shown;
}
void XXX_Shown(object sender, EventArgs e)
{
foreach (Control c in this.Controls)
c.Visible = true;
}
以下是网络上可搜索到窗口加载和关闭的次序
当 Windows Form 应用程序启动时,会以下列顺序引发主要表单的启动事件:
System.Windows.Forms.Control.HandleCreated
System.Windows.Forms.Control.BindingContextChanged
System.Windows.Forms.Form.Load
System.Windows.Forms.Control.VisibleChanged
System.Windows.Forms.Form.Activated
System.Windows.Forms.Form.Shown
当应用程序关闭时,会以下列顺序引发主要表单的关闭事件:
System.Windows.Forms.Form.Closing
System.Windows.Forms.Form.FormClosing
System.Windows.Forms.Form.Closed
System.Windows.Forms.Form.FormClosed
System.Windows.Forms.Form.Deactivate