我们知道Win32API的界面本身就是事件驱动的,Winform中也是如此。我们的窗口创建、销毁,按钮点击等操作,都可以注册对应的处理回调函数。
事件是类的成员,用于通知应用程序或用户某个操作或状态发生了变化。例如,按钮点击、窗口加载、鼠标移动等都可以触发相应的事件。在C#中,事件是一种特殊的委托类型。它允许对象将响应事件的代码(也被称为事件处理程序)与事件关联。
在VisualStudio界面设计器中,我们选中一个控件后,可以在右侧属性面板中找到对应的事件列表。
双击对应事件后,会自动创建并跳转到相关逻辑代码的编辑界面。
private void button1_Click(object sender, EventArgs e)
{
if (e is MouseEventArgs)
{
MouseEventArgs me = e as MouseEventArgs;
MessageBox.Show(String.Format("({0}, {1})", me.X, me.Y));
}
}
VisualStudio自动帮我们创建了一个空函数,我们编写了一些内容。上面例子代码中,我们通过一个消息框显示了鼠标当前点击位置相对于控件的坐标。我们可以看到函数上有两个参数:
sender
:该对象其实就是事件发送控件,这里其实就是被点击的Button
对象e
:事件参数对象,其中包含事件的额外信息,比如鼠标的点击坐标,键盘的按键等实际上,我们可以查看设计器自动生成的代码,其实就是通过绑定委托的方式,向按钮对象注册了一个回调函数。
this.button1.Click += new System.EventHandler(this.button1_Click);