form2里定义delegate
 public delegate void ChangeHandel();
 public event ChangeHandel ChangeEvent;
        private void Button1_Click(object sender, EventArgs e)
        {
             if (ChangeEvent!= null)
                ChangeEvent();
        }form1里new Form2
Form2 frm = new Form2();
frm.ChangeEvent += new ChangeHandel(your_event);private void your_event()
{
  //lab.text }

解决方案 »

  1.   

    别人要求“当第二次运行form1时,label的text的值为修改后的   填写完毕”第二次运行肯定是关闭了form1然后再打开form1了,解决方案是设置全局变量labletext,默认为"请填写信息",在form2的button点击时修改labletext="修改完毕",然后在form1加载时将lable的值变成"修改完毕"。
      

  2.   

    參見
    http://blog.csdn.net/tjvictor/archive/2006/06/23/824617.aspx
      

  3.   

    在Form1中打开Form2,那么你可以把Form1做为参数传到到Form2中如:
    在Form2中建一个Public属性FRM1
    Form2 frm2 = new Form2();
    frm2.FRM1 = this;
    然后面Form2中你就可以写FRM1.label1.Text = "gogogogo";
      

  4.   

    form也是一个对象,别想复杂了,
    既然form1中的lable又被别人修改的必要,那就在form1中
    公开一个修改lable的方法,然后交由form2来调用就可以了.form2最好不要知道form1中有什么样的lable.
      

  5.   

    我建议使用接口
    定义一个操作form1的label的接口
    inteface void setLabel(string pamStrName);
    在from1中实现接口,
    在from1中new from2(this);
    然后在form2的构造方法里写入public form2(接口名 pamFrm) {};
      

  6.   

    把Form1作为参数传到Form2中,之后就可以在Form2中对Form1进行修改了。
      

  7.   

    To maotin(liu) 谢谢。受益匪浅!呵呵 一直都用不好委托,这次又有了进一步的了解
      

  8.   


    谢谢LZ让我有机会真正理解委托
    谢谢maotin,让我真正的理解了委托!!!
      

  9.   

    你把 form1的 label控件设置为public
    或者 form1提供一个修改label的text的函数