急!求助——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...
[DllImport("user32.dll")]static extern bool LockWindowUpdate(IntPtr hWndLock);LockWindowUpdate(panelContainer.Handle);// Clear PanelpanelContainer.Controls.Clear();// my temporary TextBoxTextBox 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 windowLockWindowUpdate(IntPtr.Zero);
[解决办法]
我也遇到过类似的问题,可以这么处理,
可以给窗体设置一个背景图,然后把你所有的lable都设为不可见的,只保留输入控件可见。
因为lable只是用来显示信息,这部分操作你可以直接把lable的信息画在背景图上,这样可以节省很多开销
我之前的窗体有40多个lable和10个textbox,把lable全部处理掉之后,加载速度快很多,几乎看不出来
[解决办法]