我定义了一个新类,在类中重写了onPaint函数,类的大致结构如下:
class PlainForm : Form
{
     protected override void OnPaint(PaintEventArgs e)
     {
      ...........
     }
}
在Form1(主窗体)中有一个textBox,需要怎么做才能在重写的onPaint函数里读取textBox的text值?  

解决方案 »

  1.   

    就直接TextBox1.Text就可以取道值啊 
    但是你为什么要在OnPaint里面得到这个值呢 能不能说下你的目的?
      

  2.   

    我是想通过重写onPaint绘制一个坐标图,需用用户先输入一些参数。如果直接TextBox1.Text的话会有这样的错误:“Graphic.Form1.textBox1”表示“字段”,此处应为“类”.
    如果改为base.TextBox1.Text会出现未定义的错误,有什么办法可以解决吗?
      

  3.   

    把Form1的textBox1声明为public。
    然后
    Form1 form1 = new Form1();
    form1.textBox1.Text = "";
    这样。最好是通过给Form1增加一个public的方法或者属性来得到textBox1的值,使用MVC的设计。
      

  4.   

    问一下,在paint之前,textbox有值了吗?
      

  5.   

    多谢各位的帮助,现在可以使用textBox1里的值了,但又产生了另一个问题,如果我在设计时预先给定textBox1的text值,则运行时不管你输入什么传递的都是这个值,如果设计时把这个值设为空,则会出现“输入字符串的格式不正确”的错误,请问这是怎么回事啊?都郁闷死了。
      

  6.   

    问下onPaint函数取Textbox的值是用来干嘛的?一般onPaint函数里都不加与界面显示无关的代码,“输入字符串的格式不正确”是在进行什么操作的时候发生的?
      

  7.   

    最后还是放弃了重写onPaint的方式,在form中添加了一个pictureBox,谢谢各位了!