我开发了一个Windows应用程序,其接口具有多个文本框,并将它们全部放置在一个面板(面板具有背景图像)中。减少闪烁通过关闭WS_CLIPCHILDREN
无论何时加载面板,窗口(带有这些文本框)都会闪烁。
我读了很多的建议,以尽量减少这种闪烁, 一个建议的解决方案的是以下,
SetStyle(ControlStyles.UserPaint, true);
SetStyle(ControlStyles.AllPaintingInWmPaint, true);
SetStyle(ControlStyles.DoubleBuffer, true);
但它不和我一起工作,
我读到关闭WS_CLIPCHILDREN使用该代码:
protected override CreateParams CreateParams {
get {
var parms = base.CreateParams;
parms.Style &= ~0x02000000; // Turn off WS_CLIPCHILDREN
return parms;
}
}
此代码可以帮助一些面临同样问题的人。所以我想使用它,但我真的不知道在哪里粘贴它,我的意思是,我读了它应该粘贴在窗体中,但在UserControl的代码。我不知道该怎么做,我使用的所有控件都不是自定义控件。
看看这里&看到的第一个答案:
How to fix the flickering in User controls
由于提前,
我的表单加载时没有闪烁。你确定在加载过程中你没有在你的UI线程中做很多不必要的工作吗? – siride 2013-05-04 17:04:02
其实我有一个最初不可见的面板,当用户点击一个按钮时,这个面板(以及它上面的文本框)将会可见,此外,所有的文本框都将被填充。这不是那种明显的闪烁。但它有点困扰。谢谢:) – user1477701 2013-05-04 17:20:56