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最少要上万个,且有不同的背景

谢谢!

解决方案 »

  1.   

    自己重写TextBox 的 OnPaint 吧,然后加一个BackGroundColor的属性。
    在OnPaint里修改背景色。
      

  2.   

    在Windows 3.X时代,所有程序的所有控件被限制在32768。
    虽然在Windows 95以后这个限制被大大突破,但是控件仍然是耗费资源的东西。一个程序使用上万个文本框说明你的程序设计不合理。
    你可以看看Excel,表面上看,它可以打开很大很大的表格,但是它使用两点保证只使用很少的控件,一个是它使用虚拟滚动视图,也就是只绘制和处理显示区域的内容。另一个是,它的单元格是绘制的,而不是一个一个的控件。只有获得焦点的那个单元格才使用控件接受输入编辑。
      

  3.   

    "生成的TEXTBOX最少要上万个,且有不同的背景",
    赶紧换思路:你可以直接在PANEL控件去画这些字符串!
      

  4.   

    改用DataGridView和ListView比较好
      

  5.   

    就1幅背景是格子的图片就行了,在哪里需要使用edit,就把edit移动到哪里显示。