也可以把委托中的参数写成:
public delegate void mydelegate(object sender, myEventArgs e);
其中myEventArgs是一个类,从EventArgs类继承下来的。在这个类中可以添加任何类型的自定义参数用于传值。在Form2中:
private void button1_Click(object sender, EventArgs e) 

  //在单击该窗体上的按钮时触发事件 
  if(myevent!=null) 
  {
  myEventArgs e = new myEventArgs();
  e.自定义参数1 = 值;
  e.自定义参数2 = 值;
  ......
  myevent(this, e); 
  } 
}在Form1中:
public void gengxin(object sender, myEventArgs e) //用于修改label的方法 

  this.label1.Text = e.自定义参数;
}
原贴在:http://topic.csdn.net/u/20080626/17/1742fccb-1513-4543-9f9f-045660d24666.html子窗体传值有多种方法,我觉得这种方法比较好,想试下,但不知道怎么做,有人能给我完整代码吗?
form1有个textbox1,一个button1,form2有个textbox1,一个button1
用以上的方法实现button1,弹出form2,再把form2的textbox1的值传给form1的textbox1并显示出来.

解决方案 »

  1.   

    1. 有两个Form,名为Form1和Form2
    2. Form1有label1和button1,相关代码如下:        private void button1_Click(object sender, EventArgs e)
            {
                Form2 form = new Form2();
                form.MyEvent += Msg;
                form.Show();        }
            public void Msg(string str)
            {
                label1.Text = str;
            }3. Form2有textbox1和button1,相关代码如下:        public event Action<string> MyEvent;
            public Form2()
            {
                InitializeComponent();
            }        private void button1_Click(object sender, EventArgs e)
            {
                if (MyEvent != null)
                {
                    MyEvent(textBox1.Text);
                }
            }4. 运行,弹出Form1,点按钮,弹出Form2,在textbox输入值,并点按钮,将修改Form1的label1的text。小实例很简单,要代码的话,加我群好了,个人主页有,就不上传到下载区了。
      

  2.   

    http://topic.csdn.net/u/20110407/19/c1068d69-7331-4d02-bc0b-f5ba7a5f8dd8.html