读书人

急winform程序加载时控件闪烁严重

发布时间: 2012-04-02 19:58:59 作者: rapoo

急!求助——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 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全部处理掉之后,加载速度快很多,几乎看不出来
[解决办法]
探讨
求各位大虾帮助
winform程序界面有70多个控件(Lable 和 TextBox),在ShowDialog() 时,这些控件显示得特别慢,好像是一条线一条线画出来的,而且还重重叠叠的,看起来特别的闪。
在网上搜索了好多方法,都不管用;
1、this.SuspendLayout(); .... this.ResumeLayout(false);
2、双缓冲 DoubleBuffered ……

[解决办法]
探讨
引用:
如果有可能重做最好,重新构建UI。

How to do?怎么样重构UI可以解决这个问题???

[解决办法]
探讨

引用:
引用:
引用:
引用:

谢谢 已发……

读书人网 >C#

热点推荐