C#中的事件可以说是应用相当多的一种机制,这里从浅至深了解下C#中的事件机制:
- 事件的简单应用
- 自定义事件
- C#事件机制
- 使用事件不得不注意的事
PS:公司上网机上没有IDE工具,所以,有些代码只能是简单写一下,无法给出运行截图和完整测测试项目了;大家见谅!
1.事件的简单应用
在VS的IDE中最简单的事件应用莫过于如下:
-
创建一个WINFORM项目
-
从工具栏中拖一个"按钮"控件到form1界面上
-
双击按钮控件,VS会自动创建按钮单击事件回调函数,并将函数与按钮单击事件关联,并跳转到事件回调函数button1_Click的代码编辑界面。
-
在button1_Click函数中,填写以下代码:
MessageBox.Show("Hello,这是事件回调结果!");
-
按F5看看运行效果吧,点击按钮,弹出什么了?对的,是一个对话框:
Hello,这是事件回调结果!
这是最简单的事件应用。接下来让我们看看在代码中如何应用事件:
- 还是刚才那个按钮,让我们按F7切换到代码编辑界面吧。
-
在Form1的构造函数中,InitializeComponent();这一句下面添加我们的事件代码,使得整个构造函数是下面的样子:
public Form1() { InitializeComponent(); button1.MouseHove+=new EventHandler(Button1_MouseHover); }
-
哦,感谢微软的工程师们,在编写上面代码过程中,IDE会自动生成最终的事件回调函数,我们只需要填写函数内容即可:
private void Button1_MouseHover(object sender,EventArgs e) { MessageBox.Show("嘿,你怎么还不点?"); }
- OK,按F5看看运行效果吧(把鼠标放到按钮上等一会)。
2.自定义事件
如何在自定义的类中定义事件呢?参看下面的代码:
public class UserEventClass { public void TriggerEvent() { OnEventTrigger(); } protected virtual void OnEventTrigger() { var handler= EventTriggered; if(handler!=null) { handler(this,new EventArgs()); } } public event EventHandler EventTriggered; }