zoukankan      html  css  js  c++  java
  • C#解决MDI窗体闪屏的方法

    解决办法很easy:

    以下代码块加在父窗体中的任意位置

    protected override CreateParams CreateParams

    {

    get

    {

    CreateParams cp = base.CreateParams;

    cp.ExStyle |= 0x02000000;

    return cp;

    }

    }

    原理很简单,引用以下原话:

     A form that has a lot of controls takes a long time to paint.  Especially the Button control in its default style is expensive.  Once you get over 50 controls, it starts getting noticeable.  The Form class paints its background first and leaves "holes" where the controls need to go.  Those holes are usually white, black when you use the Opacity or TransparencyKey property.  Then each control gets painted, filling in the holes.  The visual effect is ugly and there's no ready solution for it in Windows Forms.  Double-buffering can't solve it as it only works for a single control, not a composite set of controls. 

    I discovered a new Windows style in the SDK header files, available for Windows XP and (presumably) Vista: WS_EX_COMPOSITED.  With that style turned on for your form, Windows XP does double-buffering on the form and all its child controls.  

  • 相关阅读:
    B-树和B+树
    线程与内核对象的同步-2
    线程与内核对象的同步
    高级线程同步 临界区
    Levenshtein Distance (编辑距离) 算法详解
    平衡二叉树
    静态查找表
    C++中的容器类详解
    How do I list all tables/indices contained in an SQLite database
    SmartGit STUDY 2
  • 原文地址:https://www.cnblogs.com/yzl050819/p/3573620.html
Copyright © 2011-2022 走看看