zoukankan      html  css  js  c++  java
  • 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

     
  • 相关阅读:
    K8s(2)-部署应用
    Docker-常用命令(7)
    Docker-堆栈stack(6)
    Docker-集群swarm(5)
    Docker-服务(4)
    Docker的概念术语(2)
    k8s(1)-使用kubeadm安装Kubernetes
    Celery-分布式任务队列
    使用Python管理压缩包
    jQuery基础
  • 原文地址:https://www.cnblogs.com/wx18638101223/p/9675405.html
Copyright © 2011-2022 走看看