7.5 窗体事件
版权声明:本文为博主原创文章,转载请在显著位置标明本文出处以及作者网名,未经作者允许不得用于商业目的
Windows是基于事件驱动的操作系统,窗体、控件或组件都有不同的事件来实现人机交互,例如按下按钮,这个消息引发按钮的Click事件,然后我们就需要编程处理这个事件。
7.5.1 一个简单的窗体事件
新建一个窗体应用程序项目,在窗体编辑模式下,双击窗体,将转入默认的 Form1_Load (假设窗体名称没有改变,是默认的Form1)事件的代码编辑,键入以下代码:
【例 7.1】【项目:code7-001】输出窗体相关信息。
private void Form1_Load(object sender, EventArgs e)
{
this.Width = 400;
this.Height = 300;
Console.WriteLine("窗体位置:{0},{1}", this.Left, this.Top);
Console.WriteLine("窗体大小:{0}*{1}", this.Width, this.Height);
Console.WriteLine("客户区域:{0},{1},{2},{3}",
this.ClientRectangle.X, this.ClientRectangle.Y,
this.ClientRectangle.Width, this.ClientRectangle.Height);
}
当窗体加载完成后,就会在输出窗口输出窗体位置、大小和客户区域位置大小:
图7-12 输出窗体相关信息
当程序启动的时候,默认创建了一个窗体的新实例,此时在代码中直接用Form1来表示当前窗体,那么就会有错误提示“不能通过其默认实例指代自身”,因此用this来代替了这个新实例。代码中甚至可以不使用this,直接输入 Width = 400,不过不建议这样。
简单对以上事件进行分析:
private void Form1_Load(object sender, EventArgs e)
private:表明这是一个私有的过程。
void:指明这是一个无返回值的过程。
Form1_Load:窗口载入时候引发事件的名称,可以自定义名称,例如修改为:
private void F_Load(object sender, EventArgs e)
如果修改了名称,需要同时找到Form1.Designer.cs中的代码:
this.Load += new System.EventHandler(this.Form1_Load);
修改为:
this.Load += new System.EventHandler(this.F_Load);
sender:引发事件的对象,在这里实际上就是Form1类,如果sender是在控件或组件的事件中,相应地就是指的该控件或组件。这里可以在代码中将sender显式转换为 Form1:Form1 f1 = (Form1)sender;
e:引发的事件。这里是EventArgs 类。
7.5.2 为窗体、控件或组件添加事件
双击窗体、控件或组件,就会转入默认的事件,例如窗体是Load事件,按钮是Click事件,文本框是TextChanged事件……,要使用其它的事件可以采用以下方法:
选中窗体、控件或组件,从右侧【属性】窗口,单击【事件】按钮(闪电图样的图标),找到需要创建的事件,双击即可创建并转入该事件的代码编写。
表7-3 窗体和控件常见的事件
事件 | 说明 |
Click | 在窗体或控件上单击鼠标 |
DoubleClick | 在窗体或控件上双击鼠标 |
MouseDown | 在窗体或控件上按下鼠标(不释放) |
MouseUp | 在窗体或控件上按下的鼠标按键释放 |
MouseMove | 鼠标在窗体或控件上移动 |
MouseHover | 鼠标在窗体或控件上停留 |
KeyPress | 在窗体或控件有焦点时按下键盘上的按键 |
除了以上事件,窗体、控件和组件还有自己独立的事件。
表7-4 窗体特有的事件:
事件 | 说明 |
Load | 窗体载入时 |
FormClosing | 窗体关闭时 |
FormClosed | 窗体已经关闭 |
Closed | 同 FormClosed,已经过时,但仍能使用 |
Closing | 同FormClosing,已经过时,但仍能使用 |
学习更多vb.net知识,请参看vb.net 教程 目录
学习更多C#知识,请参看C#教程 目录