急!求助——winform程序加载时控件闪烁严重
求各位大虾帮助
winform程序界面有70多个控件(Lable 和 TextBox),在ShowDialog() 时,这些控件显示得特别慢,好像是一条线一条线画出来的,而且还重重叠叠的,看起来特别的闪。
在网上搜索了好多方法,都不管用;
1、this.SuspendLayout(); .... this.ResumeLayout(false);
2、双缓冲 DoubleBuffered true...
SetStyle(ControlStyles.UserPaint, true);
SetStyle(ControlStyles.AllPaintingInWmPaint, true); // 禁止擦除背景.
SetStyle(ControlStyles.DoubleBuffer, true); // 双缓冲
3、……
SOS……。
------解决方案--------------------Try...
C# code
[DllImport("user32.dll")]
static extern bool LockWindowUpdate(IntPtr hWndLock);
LockWindowUpdate(panelContainer.Handle);
// Clear Panel
panelContainer.Controls.Clear();
// my temporary TextBox
TextBox myT ;
for (int lauf=0; lauf < 200; lauf++)
{
// Create New TextBox
myT = new TextBox();
// Add TextBox to the Panel
panelContainer.Controls.Add(myT);
}
// redraw the window
LockWindowUpdate(IntPtr.Zero);
------解决方案--------------------
我也遇到过类似的问题,可以这么处理,
可以给窗体设置一个背景图,然后把你所有的lable都设为不可见的,只保留输入控件可见。
因为lable只是用来显示信息,这部分操作你可以直接把lable的信息画在背景图上,这样可以节省很多开销
我之前的窗体有40多个lable和10个textbox,把lable全部处理掉之后,加载速度快很多,几乎看不出来
------解决方案--------------------
------解决方案--------------------
------解决方案--------------------