调整winform大小时我遇到了问题。我想为我的所有表单提供特定的背景颜色,所以我已经覆盖了OnPaintBackground方法,如下所示
protected override void OnPaintBackground(PaintEventArgs e)
{
DoubleBuffered = true;
ResizeRedraw = true;
using (var brush = new LinearGradientBrush(ClientRectangle, Color.LightBlue, Color.CornflowerBlue, 90F))
{
e.Graphics.FillRectangle(brush, ClientRectangle);
}
}
在表单上我还有一个包含文本框,标签等的GroupBox,其背景颜色设置为透明。当winform执行第一次工作正常,但是当我最小化winform然后最大化RED CROSS出现在groupbox内。
我已经审查了很多案例,但大多数都谈到了闪烁,但事实并非如此。我还看过这幅画是如何运作的,显然当winform首先显示时告诉孩子们控制自己画画,但由于父亲还没有画画,所以控件不知道画什么作为透明方面控件的背景。
以下是调整大小后的样子示例。
先谢谢您的帮助!
PS:我使用的是Visual Studio 2012,C#。
答案 0 :(得分:-1)
我在这里找到了一篇文章:Calling OnPaintBackground
问题的答案是关于如何覆盖OnPaintBackground,为了确保它正常工作,他说你应该将表单样式设置为以下
this.SetStyle(ControlStyles.AllPaintingInWmPaint
| ControlStyles.OptimizedDoubleBuffer
| ControlStyles.ResizeRedraw
| ControlStyles.DoubleBuffer
| ControlStyles.UserPaint
, true);
.UserPaint
只是告诉它你自己正在处理这幅画,以确保它没有被其他任何东西处理,以便正确地覆盖它。
希望这能帮到你!