5

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

我正在覆盖OnPaint我不确定这是否会导致问题的方法:

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

这只是一个轻微的延迟,但它是可见的和烦人的。谢谢你。

顺便说一下,表单是双缓冲的。

编辑:我已经指出问题在于表单没有FormBorderStyle. 如果FormBorderStyle设置为Sizable,则不会出现此问题。但是请注意,FormBorderStyle.None我的边框样式是必要的,所以我还没有找到解决方案。

4

1 回答 1

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;
        }
    }
于 2013-06-14T16:12:43.897 回答