用户控件没有被绘制c#

时间:2018-05-09 06:36:33

标签: c# winforms double-buffering

我有一个应用程序,我可以从1个用户控件移动到许多用户控件。当我转向许多控件时,我遇到了闪烁的问题。 要解决闪烁,我通过 双缓冲 启用了

protected override CreateParams CreateParams
{
    get
    {
        CreateParams cp = base.CreateParams;
        cp.ExStyle |= 0x02000000;  // Turn on WS_EX_COMPOSITED
        return cp;
    }
}

它确实解决了闪烁的问题。但是引入了一个新问题,其中有时我的用户控件没有完全绘制。出现了一个黑色的窗口。为了解决这个问题,我需要最小化和最大化软件并且它看起来正确。

  

我认为,虽然双缓冲正在为所有用户绘画   一次控制,一个或多个用户控件仍在生成它   控制。在大师绘画的时候,那种控制不是   准备好了。

以下是获得正确想法的图片 -

enter image description here

如图所示,有一种形式,在此特定场景中包含4个用户控件。每个用户控件还包含其他控件/用户控件。

这个问题可能出现什么问题?

1 个答案:

答案 0 :(得分:0)

我通过将表单设计中的TrasnsparencyKey从黑色更改为另一种颜色而不是黑色来解决此问题,请尝试使用一种不使用的颜色。