从最小化状态还原表单时,WS_EX_COMPOSITED导致无休止的重新绘制

时间:2018-07-15 15:49:01

标签: c# winforms visual-studio-2017

从最小化状态恢复时,Form花费了无尽的时间来重新绘制。
Form是无边界的。我要覆盖 WndProc CreateParms
我正在将无边界Form从最小状态恢复到正常状态。
我正在覆盖 CreateParms 方法来添加阴影并停止闪烁。

protected override CreateParams CreateParams
    {
        get
        {
            CreateParams cp = base.CreateParams;

            m_aeroEnabled = CheckAeroEnabled();
            if (!m_aeroEnabled)
               cp.ClassStyle |= CS_DROPSHADOW;

            cp.Style |= WS_MINIMIZEBOX;             
            cp.ExStyle |= 0x02000000; //WS_EX_COMPOSITED                
            cp.ClassStyle |= CS_DBLCLKS;

            return cp;
        }
    }

当删除 cp.ExStyle | = 0x02000000 时,问题消失了,但是出现了闪烁的问题。

编辑: 添加似乎导致问题的自定义控件的代码:

public partial class BorderPanel : Panel
{
    public BorderPanel()
    {

    }

    protected override void OnPaint(PaintEventArgs pe)
    {
        ControlPaint.DrawBorder(pe.Graphics, this.ClientRectangle, 
           BorderColor, borderSize.Left, ButtonBorderStyle.Solid,
           BorderColor, borderSize.Top, ButtonBorderStyle.Solid, 
           BorderColor, borderSize.Right, ButtonBorderStyle.Solid, 
           BorderColor, borderSize.Bottom, ButtonBorderStyle.Solid);

        base.OnPaint(pe);
    }
}

1 个答案:

答案 0 :(得分:1)

我遇到了和您一样的问题,并且解决了表单设计中TrasnsparencyKey从黑色更改为另一种颜色而不是黑色的问题,请尝试不使用的一种颜色。