bflovesnow 郑州华粮科技股份有限公司 软件开发部经理  2005年03月23日
(WinForm) MDI 窗体背景图闪烁的问题:
主窗体 Main.cs 为 MDI 容器时的背景图片无法直接添加
所以用了以下代码实现了 MDI 的背景图:

System.Drawing.Image img;
private void MainForm_Load(object sender, System.EventArgs e)
{
img = Image.FromFile(@"背景.jpg");
this.Controls[this.Controls.Count - 1].Paint += new PaintEventHandler(Form1_Paint1);
}//MainForm_Load
private void Form1_Paint1(object sender, System.Windows.Forms.PaintEventArgs e)
{
Graphics g = Graphics.FromHwnd(this.Controls[this.Controls.Count - 1].Handle);
g.DrawImage(img, 0, 0, this.Controls[this.Controls.Count - 1].Width , this.Controls[this.Controls.Count - 1].Height );
}

这样是可以显示图片了
但当我就像本论坛一样改变左边树区的显示状态时
图片会产生比较强烈的闪烁
所以采用下面的代码来实现双冲,在 Main.cs 的构造函数里:

SetStyle(ControlStyles.ResizeRedraw | ControlStyles.DoubleBuffer | ControlStyles.UserPaint | ControlStyles.AllPaintingInWmPaint,true);

UpdateStyles();

但并没有一点改观。

特来寻求解决之道,谢谢。


还有一个小问题,就是模态和非模态窗本的问题:
如果点击模态窗体之外,你会发现窗体在哗哗的闪动
记得在 Delphi 中的 MDI 窗体中,可以设置非模态窗体的显示位置永远在最前
这样做是因为可以在点击非模窗体之外不产生闪动现象
.NET 也可以设置,但 Delphi 中的要比在 .NET 中设置的效果好
因为在 .NET 中设置后,本窗体不会随着 MDI 窗体变化而变化
就是说,MDI 窗体隐藏了,但它依然不动:(

不知我讲清楚了没。这个问题不用太观注,主要就是上面的背景图片的问题,赫赫~~~
...全文
571 点赞 收藏 5
写回复
5 条回复

还没有回复,快来抢沙发~

发动态
发帖子
C#
创建于2007-09-28

8.4w+

社区成员

64.0w+

社区内容

.NET技术 C#
社区公告
暂无公告