日期:2014-05-18 浏览次数:21157 次
public class A
{
//在这里定义一个事件
public event EventHandler TestEvent;
//为这个事件写一个判断(MSDN的一般约定方案,不是必须方案)
protected virtual void OnTestEvent()
{
if (this.TestEvent != null) this.TestEvent.Invoke(this, new EventArgs());
}
int i;
//为事件设定一个用于触发的属性
public int I
{
get
{
return this.i;
}
set
{
if (value > 100 || value < 0) this.OnTestEvent(); else this.i = value;
}
}
}
public class B
{
//要使用A类的事件先要申明一个A类对象
A a;
public B()
{
this.a = new A(); this.a.TestEvent += this.a_TestEvent;
}
void a_TestEvent(object sender, EventArgs e)
{
//事件响应
}
}
------解决方案--------------------
m_nameButton.Click事件受委托调用NameButtonClicked这个方法,也就是说m_nameButton.Click会调用NameButtonClicked这个方法!
------解决方案--------------------
2.m_nameButton m_clearButton都绑定了Click事件 如何区分呢
看他们委托谁做事
3.我就选这句
m_nameButton.Click += new System.EventHandler(NameButtonClicked);
m_nameButton触发Click事件要NameButtonClicked帮忙做事,也就是委托NameButtonClicked
NameButtonClicked可以听从m_nameButton的Click号召也是有来头的,NameButtonClicked要符合EventHandler委托签名
EventHandler委托签名如下
public delegate void EventHandler (Object sender,EventArgs e)
也就是NameButtonClicked函数的输入参数必须是(Object sender,EventArgs e),而返回值必须是void