我有一个表格,我用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
作为我的边框样式,所以我还没有找到解决方案。
答案 0 :(得分: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;
}
}