日期:2014-05-18  浏览次数:20943 次

如何给事件处理程序传递参数
请问大家:
我有一个简单的窗口,其中的一个按钮的单击事件的处理程序要处理其他两个对象中的成员,那这两个对象要如何传递给事件处理程序呢,事件处理程序不是只接受两个参数吗?
不好意思,我是菜鸟刚来,没有多少分,请大家帮下忙好吗?

------解决方案--------------------
自定义委托,事件中想传什么参数委托中就加入什么参数
------解决方案--------------------
这样的参数信息只能在自定义参数才可以传递,且事件也要自定义的。比如:

class myEventArgs:EventArgs
{
...
}

public EventHandler <myEventArgs> myEvent;


------解决方案--------------------
public event EventHandler <myEventArgs> myEvent;


------解决方案--------------------
是的,Click事件是系统定义好了,所以你不能通过这个Click的参数e来传递数据。

要想通过事件参数传递,这个事件最好是自定义的,也就是说你要自定义一个事件及事件参数才可以。
------解决方案--------------------
委托!搭配事件实现

delegate
event

去www.baidu.com www.google.com 搜索吧

关键字 .net 使用 委托
------解决方案--------------------
你可以这样来做:
public class MEventArgs : EventArgs
{
private object m_SomePara;

public MEventArgs(object para)
{
this.m_SomePara = para;
}
public object SomePara
{
get { return m_SomePara; }
set { m_SomePara = value; }
}
}
public event EventHandler <MEventArgs> MEvent;
private void button2_Click(object sender, EventArgs e)
{
this.MEvent += new EventHandler <MEventArgs> (Form1_MEvent);
if (this.MEvent != null)
{
MEventArgs args = new MEventArgs(1234);
this.MEvent(this, args);
}
}

void Form1_MEvent(object sender, Form1.MEventArgs e)
{
Console.WriteLine(e.SomePara);
}