当前位置: 首页 > article >正文

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#教程 目录


http://www.kler.cn/a/611027.html

相关文章:

  • 如何理解FFMPEG两个宏 1.MATCH_PER_TYPE_OPT, 2.MATCH_PER_STREAM_OPT
  • 【Python】编程50个经典操作
  • 图解神经网络和强化学习
  • 回滚日志(Undo Log) 的 Purge
  • 【SpringCloud】认识微服务
  • JVM类加载过程详解
  • 【Python-OpenCV】手势控制贪吃蛇
  • Linux系统管理与编程08:任务驱动综合应用
  • 音视频 三 看书的笔记 MediaPlayer的C/S架构
  • 基于LLM的Agent框架全面比较分析:MGX(MetaGPT X)、AutoGen、OpenHands与秒哒(MiaoDa)
  • WMS WCS系统架构
  • MongoDB 实际工作中应用场景
  • ctfshow WEB web3
  • Conda常用命令汇总(持续更新中)
  • jmeter接口自动化+ant执行(方案)
  • Maven插件学习(二)——测试插件maven-surefire-pluigin
  • Redis原理:watch命令
  • ReentrantLock 锁优化与 synchronized 锁膨胀的共同点
  • 更换Linux的下载源站点(基于Ubuntu)
  • SpringCould微服务架构之Docker(4)