C# 在WINFORM下,在一个PANEL控件中动态生成上万个TEXTBOX控件,对这些TEXTBOX随机赋值1或2或0,然后将TEXTBOX的背景设为红色或蓝色或绿色。现在问题来了,这些控件生成了,但滚动PANEL滚动条的时候,下面的TEXTBOX的背景全没了
加了下面这些代码也没用
this.SetStyle(ControlStyles.OptimizedDoubleBuffer, true);
this.SetStyle(ControlStyles.AllPaintingInWmPaint, true);
this.SetStyle(ControlStyles.UserPaint, true);this.DoubleBuffered = true;各位大帮我想想办法,帮我解决下。注:生成的TEXTBOX最少要上万个,且有不同的背景
谢谢!
加了下面这些代码也没用
this.SetStyle(ControlStyles.OptimizedDoubleBuffer, true);
this.SetStyle(ControlStyles.AllPaintingInWmPaint, true);
this.SetStyle(ControlStyles.UserPaint, true);this.DoubleBuffered = true;各位大帮我想想办法,帮我解决下。注:生成的TEXTBOX最少要上万个,且有不同的背景
谢谢!
在OnPaint里修改背景色。
虽然在Windows 95以后这个限制被大大突破,但是控件仍然是耗费资源的东西。一个程序使用上万个文本框说明你的程序设计不合理。
你可以看看Excel,表面上看,它可以打开很大很大的表格,但是它使用两点保证只使用很少的控件,一个是它使用虚拟滚动视图,也就是只绘制和处理显示区域的内容。另一个是,它的单元格是绘制的,而不是一个一个的控件。只有获得焦点的那个单元格才使用控件接受输入编辑。
赶紧换思路:你可以直接在PANEL控件去画这些字符串!