第一个窗体中有两个按扭,第二个窗体中一个文本框。
在Form1中:        public int a=0;
        private void button1_Click(object sender, EventArgs e)
        {
            a = 1;
            Form2 form2 = new Form2();
            form2.Show();
        }        private void button2_Click(object sender, EventArgs e)
        {
            a = 2;
            Form2 form2 = new Form2();
            form2.Show();
        }
在Form2中:private void Form2_Load(object sender, EventArgs e)
        {   Form1 form1=new Form1();
            switch (form1.a)
            {
                case 1:
                    textBox1.Text="1";
                    break;
                case 2:
                    textBox1.Text="2";
                    break;
                case 3:
                    textBox1.Text="3";
                    break;
                default :
                    break;
            }
        }
为什么不管点击Form1中的哪个按扭,Form2中的textBox1.Text都等于0?

解决方案 »

  1.   

    private void button1_Click(object sender, EventArgs e)
            {
                a = 1;
                Form2 form2 = new Form2();
                form2.Show();
            }
    在Form2中定义一个Public int a;
    然后改为:
            private void button1_Click(object sender, EventArgs e)
            {
                a = 1;
                Form2 form2 = new Form2();
                form2.a=this.a
                form2.Show();
            }
      

  2.   

    Form1 form1=new Form1(); 你的form1对象和Form1窗体指向的不是同一内存地址
    你已经想办法把Form1的a值传到Form2,不能在Form2里new form1
      

  3.   

    Form2里又得新New()一个Form1不是原来的了。
    可以这样改
      public int a=0;
            private void button1_Click(object sender, EventArgs e)
            {
                a = 1;
                Form2 form2 = new Form2();
                form2.ShowDialog(this);
            }        private void button2_Click(object sender, EventArgs e)
            {
                a = 2;
                Form2 form2 = new Form2();
                form2.ShowDialog(this);
            }
    在Form2中:private void Form2_Load(object sender, EventArgs e)
            {   Form1 form1=new Form1();
                switch (((form1)this.Owner).a)
                {
                    case 1:
                        textBox1.Text="1";
                        break;
                    case 2:
                        textBox1.Text="2";
                        break;
                    case 3:
                        textBox1.Text="3";
                        break;
                    default :
                        break;
                }
            }
      

  4.   

    Form1中输入 public int a=0; private void button1_Click(object sender, System.EventArgs e)
    {
    a = 1;
    Form2 form2 = new Form2();
    form2.a=this.a;
    form2.Show(); } private void button2_Click(object sender, System.EventArgs e)
    {
    a = 2;
    Form2 form2 = new Form2();
    form2.a=this.a;
        form2.Show();
    }Form2中输入
            public int a=0;
    private void Form2_Load(object sender, System.EventArgs e)
    {
    textBox1.Text =a.ToString() ;
    }跑过了.肯定对