建立2个窗体form1 form2 
form1中有2个button (gotof2用于跳转到form2,button1用于判断textbox1中是否输入了字符) 
form2中有1个textbox1和1个gotof1  textbox用于输入字符  gotof1用于跳转到form1窗口 
在form1建立一个 
        private void button1_Click(object sender, EventArgs e) 
        { 
            
            Form2 f2 = new Form2(); 
            if (f2.textBox1.Text != string.Empty) 
            { 
                MessageBox.Show("文本不为空"); 
            } 
            else 
            { 
                MessageBox.Show("文本为空"); 
            }         }         private void gotof2_Click(object sender, EventArgs e) 
        { 
            
            Form2 f2 = new Form2(); 
            f2.Show(); 
            
        } 
在form2中 
    private void gotof1_Click(object sender, EventArgs e) 
        { 
            Form1 f1 = new Form1(); 
            f1.Show(); 
        } 
这里textbox1的modify属性已经改为public 
但是不论我是否在textbox1输入字符,判断该文本框中依然为空,愁死我了! 
那个高人给指导指导,谢谢了!

解决方案 »

  1.   

    Form2 f2 = new Form2();
    你new了一个Form2()那form2.textBox1里肯定永远都是空的
      

  2.   


    Form2 f2 = new Form2(); 
    private void button1_Click(object sender, EventArgs e) 
            { 
                
                if (f2.textBox1.Text != string.Empty) 
                { 
                    MessageBox.Show("文本不为空"); 
                } 
                else 
                { 
                    MessageBox.Show("文本为空"); 
                }         }         private void gotof2_Click(object sender, EventArgs e) 
            { 
                
                f2.Show(); 
                
            } 
      

  3.   

    form2里又new了一个form1,执行的时候你没发现会出现多个form1和form2吗
    问题关键在于new,new产生的窗体和你原来显示的窗体已经不是同一个窗体了。
    一个简单的解决办法就是用单件模式,这样可以保证你每次操作的对象都是同一个对象而不至于总是new一个新的对象出来。
    一个更简单的办法是直接设置两个静态变量来保存form1和form2的引用,然后你就直接用通过这两个静态变量来互相访问两个form对象。
      

  4.   

    在form1里加上如下部分:private static form1 m_this = null;
    public static form1 getThis()
    {
        if (m_this == null || m_this.IsDisposed())
            m_this = new form1();
        return m_this;
    }在form2里加上如下部分:private static form2 m_this = null;
    public static form2 getThis()
    {
        if (m_this == null || m_this.IsDisposed())
            m_this = new form2();
        return m_this;
    }然后在你其他所有new form1和new form2的地方全部换成form1.getThis()和form2.getThis(),比如将button1_Click中的Form2 f2 = new Form2(); 换成Form2 f2 = Form2.getThis();  这样应该就可以了
      

  5.   

    9楼的朋友,按照你说的做了,出现了异常
    system.windows.Form.Control.Isdisposed是属性,但此处被当作方法来使用
      

  6.   


    FormA a = new FormA();
    FormA b = new FormA();
    //你会认为a 和b 是同一个对象么?如果会,那我没的说了
    FormA CreateA()
    {
     FormA a = new FormA();
     return a;

    FormA CreateB()
    {
     FormA b = new FormA();
     return b;
    }
    //同理a 和 b也是不同的,把CreatB中的 b 换成a,结果一样的,局部变量而已。
    //这样上面两个函数就一样了,合并掉
    //每次调用都返回不同的对象,就是你的点击事件了