我有三个form,form1.form2.form3,在form1上放一个button1,点击弹出form2,在form2上放一个button2点击弹出form3,在form3上放一个textbox,请问如何在form1的程序中访问到form3的texrbox.text

解决方案 »

  1.   

    在Form1中设置一个属性,当点击按钮创建Form2的时候,把Form2设置给该属性。
    同样的,在Form2设置一个属性,当点击按钮创建Form3的时候,把Form2设置给该属性。
    这样Form1,就可以通过属性访问到Form3,把TextBox在Form3中设置为Public,就可以访问到了。
      

  2.   

    能详细的说下吗?
    我发现的问题是
    在button1中的事件{form2 f2 = new form2(); f2.show();}
    在button1中的事件{form3 f3 = new form3(); f3.show();}
    那么在form1的程序中我怎么样,才能访问到f2,f3,呢
      

  3.   

    比如说你在F3里有一个属性
    TextBoxValue
    那么在Form3的代码里面加上this.TextBoxValue=this.TextBox.Text//把TextBox的内容赋值给TextBoxValue属性
    然后
    在Form1里面访问f3.TextBoxValue就好了
      

  4.   

    可是那个f3对象是放在private事件里的啊,不能在外面访问到的啊
      

  5.   

    这跟f3对象放在哪个事件没关系吧,只要TextBoxValue
    是Public的就可以在同一个命名空间地下访问了啊
      

  6.   

    看到最好的方法是用模态显示
    就是SHOWDIALOG
    那样直接用public就可以了 也比较安全
    缺点是form3打开时不能操作FORM1
    另一种比较方便的方法是做一个BASEFORM:FORM FORM1 FORM2 FORM3都继承这个FORM
    然后BASEFORM里设一个STATIC PUBLIC
    但老实说 有那么点不安全
    其他方法很复杂 而且BUG很多
      

  7.   

    跟F2没有什么关系吧。你在F1中设一个静态公有属性,          private static string _F3TextBoxString;
             public static string F3TextBoxString
             {
                 get
                 {
                     return _F3TextBoxString;
                 }
                 set
                 {
                     _F3TextBoxString = value;
                 }
             }
    然后在F3的相关事件中令F1.F3TextBoxString=this.textbox.text
    【如果我的回答对你有所帮助,请到下列地址http://download.csdn.net/source/2247484 下载原创家庭记账软件,并给出宝贵意见!】
      

  8.   

    winform间传值
    public partial class Form1 : Form  
      {  
      private void button1_Click(object sender, EventArgs e)  
      {  
      Form2 frm2 = new Form2();  
      frm2.Show(this);  
      }  
      }    public partial class Form2 : Form  
      {  
      private void button1_Click(object sender, EventArgs e)  
      {  
      Form1 frm1 = (Form1)this.Owner;  
      ((TextBox)frm1.Controls["textBox1"]).Text = this.textBox2.Text;  
      this.Close();  
      }  
      }