.net框架笔记(六)之--------二
第十一章 事件
接上篇文章.
再给出一个普通的例子:
1
class Program2

{3
static void Main(string[] args)4

{5
Person person = new Person("dermersjun");6
person.Name = "丢失了灵魂的小鱼";7
}8
}9
public class Person10

{11
private string m_name;12
public string Name13

{14
get15

{16
return m_name;17
}18
set19

{20
if (m_name != value)21

{22
//触发事件,相当于上篇中的OnMailMsg方法,因为这里已经有登记对象了,所以会通知这个对象23
OnNameChange(this, new EventArgs());24
m_name = value;25
}26
}27
}28
public Person()29

{30
//构造一个指向OnNameChange回调方法的EventHandler的委托实例,并登记事件31
NameChange += new EventHandler(OnNameChange);32

33
}34
public Person(string sName)35

{36
m_name = sName;37

38
//构造一个指向OnNameChange回调方法的EventHandler的委托实例,并登记事件39
NameChange += new EventHandler(OnNameChange);40

41
}42
//定义一个事件成员,相当于上篇中的MailMsg事件43
public event EventHandler NameChange;44
45

46
protected void OnNameChange(object sender,EventArgs e)47

{48
Console.WriteLine("我原来的名字{0} ", m_name);49
}50

51
}
上面的代码等同于下面的:
1
class Program2

{3
static void Main(string[] args)4

{5
Person person = new Person("dermersjun");6
person.Name = "丢失了灵魂的小鱼";7
}8
}9
public class Person10

{11
private string m_name;12
public string Name13

{14
get15

{16
return m_name;17
}18
set19

{20
if (m_name != value)21

{22
//触发事件,相当于上篇中的OnMailMsg方法,因为这里已经有登记对象了,所以会通知这个对象23
OnNameChange(this, new EventArgs());24
m_name = value;25
}26
}27
}28
public Person()29

{30
//构造一个指向OnNameChange回调方法的EventHandler的委托实例,并登记事件31
NameChange += new EventHandler(OnNameChange);32

33
}34
public Person(string sName)35

{36
m_name = sName;37

38
//构造一个指向OnNameChange回调方法的EventHandler的委托实例,并登记事件39
NameChange += new EventHandler(OnNameChange);40

41
}42
//定义一个事件成员,相当于上篇中的MailMsg事件43
public event EventHandler NameChange44

{45
//将要通知的事件接受者登记在委托链表上46
add47

{48
eh += (EventHandler)Delegate.Combine(eh, value);49
}50
//将要通知的事件接受者从委托链表上删除51
remove52

{53
eh -= (EventHandler)Delegate.Combine(eh, value);54
}55
}56

57
//定义一个委托链表,上面有要通知的所有对象58
private EventHandler eh; 59
60

61
protected void OnNameChange(object sender,EventArgs e)62

{63
Console.WriteLine("我原来的名字{0} ", m_name);64
}65

66
}下面是重写一个自己的MyButton:
1
public class MyButton:Button2

{3
4

5
//定义了一个事件成员MyClick,6
public event EventHandler MyClick;7
public void OnMyClick(object sender, EventArgs e)8

{9
MessageBox.Show("OnMyClick");10
}11
public MyButton()12

{13
//构造一个指向OnMyClick回调方法的委托实例,然后登记事件对象14
this.MyClick += new EventHandler(OnMyClick);15
this.ForeColor = System.Drawing.Color.Crimson;16

17
}18

19

20
}

浙公网安备 33010602011771号