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我的边框样式是必要的,所以我还没有找到解决方案.
尝试将其添加到对话框表单中:
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)
| 归档时间: |
|
| 查看次数: |
468 次 |
| 最近记录: |