我想在form2中更改form1中label控件的内容。我是这么写的在form1中
      private void button1_Click(object sender, EventArgs e)
        {
            Form2 pForm2 = new Form2();
            pForm2.Show();           
            
        }
在form2中
      private void button1_Click(object sender, EventArgs e)
        {
            Form1 pForm1 = new Form1();
            pForm1.label1.Text = "This is Form1";            
        }
其中form1中label的modified属性设置为public了。可是label的text属性没有反应,怎么回事???

解决方案 »

  1.   

    要Public  label1的定义
    public Label label1=new Label();Form1这么定义
      

  2.   

    一种方法:可以把form1窗体作为参数传给form2:
    在form1中
      private void button1_Click(object sender, EventArgs e)
      {
      Form2 pForm2 = new Form2(this);//重构Form2构造函数
      pForm2.Show();      
      }
    在form2中
      Form1 pForm1;
      public Form2(Form1 form)
      {
        pForm1=form;
      }  private void button1_Click(object sender, EventArgs e)
      {
        pForm1.label1.Text = "This is Form1";   
      }
      

  3.   


    Form1 pForm1 = new Form1();
      pForm1.label1.Text = "This is Form1"; 这样写是又重新生成了一个Form1的实例, 修改的是新实例中的Label1中的Text属性,原来的当然不变了。
      

  4.   

    1.在form2中添加对form1的引用
    2.在form2中对外开放事件,form1注册
      

  5.   

    form2定义委托
    public void MyDelegate(String text);
    public Event MyDelegate MyEvent;
    在form2中
      private void button1_Click(object sender, EventArgs e)
      {
       if(MyEvent!=null)
       {
        MyEvent("This is Form1");
       } 
     }在form1中
      private void button1_Click(object sender, EventArgs e)
      {
      Form2 pForm2 = new Form2();
      pForm2.MyEvent+=new Form2.MyDelegate(ChangeText);
      pForm2.Show();   
      }
     private void ChangeText(String text)
     {
       this.label1.Text = "This is Form1";   
     }
      

  6.   

    在form2中定义一个事件,form1中注册该事件即可实现。
      

  7.   

    我上面那个委托定义错了
    改为public delegate void MyDelegate(String text);
      

  8.   

    将另一个窗体的控件属性设置成public 就可以了。