控件不是同时绘制的

Jur*_*eri 5 c# onpaint winforms

我有一个表格,我正在使用ShowDialog它包含几个文本框,标签和一个按钮.我遇到的问题是文本框是在表单本身之前绘制的,而其他控件是在绘制之前绘制的.

我重写了这个OnPaint方法我不确定这是否会导致问题:

protected override void OnPaint(PaintEventArgs e)
{
    ControlPaint.DrawBorder(e.Graphics, e.ClipRectangle, Color.Black, ButtonBorderStyle.Solid);
    base.OnPaint(e);
}
Run Code Online (Sandbox Code Playgroud)

这只是一个轻微的延迟,但它是可见的和恼人的.谢谢.

顺便说一下,表格是双缓冲的.

编辑:我已经确定问题是表格没有FormBorderStyle.随着FormBorderStyle设置Sizable,不会发生此问题.但请注意,FormBorderStyle.None我的边框样式是必要的,所以我还没有找到解决方案.

Goj*_*tah 1

尝试将其添加到对话框表单中:

    protected override CreateParams CreateParams
    {
        get
        {
            // Activate double buffering at the form level.  All child controls will be double buffered as well.

            CreateParams cp = base.CreateParams;

            cp.ExStyle |= 0x02000000;   // WS_EX_COMPOSITED

            return cp;
        }
    }
Run Code Online (Sandbox Code Playgroud)