winfrom加载自定义控件、窗口pannel后闪烁问题

我用一个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

 
posted @ 2018-09-19 16:48  郑州谷多软件  阅读(450)  评论(0编辑  收藏  举报