我们知道event的第二个参数EventArgs,可以用来在处理事件触发时,传递数据,今天就用它在窗体间传值。
demo是winform程序,就是两个窗体,ParentFrm和ChildFrm。
首先定义一个类myCustomEventArgs继承自EventArgs

 Code
Code
public class myCustomEventArgs : EventArgs  //事件参数类
    {
        private string _str;
        public myCustomEventArgs(string str)
        {
            this.Str = str;  //设置属性的值
        }
        public string Str
        {
            get { return _str; }
            set { _str = value; }
        }
    }然后声明一个用来处理事件的delegate

 Code
Code
 public delegate void myDelegate(object sender, myCustomEventArgs e);再定义一个事件

 Code
Code
 public static event myDelegate myEvent;(可以不是静态的)
在ParentFrm的load里写上

 Code
Code
myEvent += new myDelegate(ParentFrm_myEvent);
在ChildFrm的load里写上

 Code
Code
  ParentFrm.myEvent += new myDelegate(ChildFrm_myEvent);ChildFrm里有个Handler

 Code
Code
 void ChildFrm_myEvent(object sender, myCustomEventArgs e)
        {
            this.textBox1.Text = e.Str;
        }然后就可以实现我们想要的效果了。
源代码:
ParentFrm,里面有一个button,一个textbox。

 Code
Code
namespace CodeProjectWindowThread
{
    public delegate void myDelegate(object sender, myCustomEventArgs e);
    public partial class ParentFrm : Form
    {
        public static event myDelegate myEvent;
        public ParentFrm()
        {
            InitializeComponent();
        }
        private void ParentFrm_Load(object sender, EventArgs e)
        {
            myEvent += new myDelegate(ParentFrm_myEvent);
            ChildFrm frm = new ChildFrm();
            frm.Show();
        }
        void ParentFrm_myEvent(object sender, myCustomEventArgs e)
        {
        }
        private void button1_Click(object sender, EventArgs e)
        {
            myEvent(sender, new myCustomEventArgs(this.textBox1.Text));
        }
    }
    public class myCustomEventArgs : EventArgs  //事件参数类
    {
        private string _str;
        public myCustomEventArgs(string str)
        {
            this.Str = str;  //设置属性的值
        }
        public string Str
        {
            get { return _str; }
            set { _str = value; }
        }
    } 
ChildFrm代码,里面有一个textbox。

 Code
Code
namespace CodeProjectWindowThread
{
    public partial class ChildFrm : Form
    {
        public ChildFrm()
        {
            InitializeComponent();
        }
        private void ChildFrm_Load(object sender, EventArgs e)
        {
            ParentFrm.myEvent += new myDelegate(ChildFrm_myEvent);
        }
        void ChildFrm_myEvent(object sender, myCustomEventArgs e)
        {
            this.textBox1.Text = e.Str;
        }
    }
} 
单击ParentFrm窗体的button,ChildFrm窗体里的textbox会显示ParentFrm窗体里的textbox的值。