网站首页 > 技术文章 正文
事件概念
在C# 中,事件(Event)可以看作是用户的一系列操作,例如点击键盘的某个按键、单击/移动鼠标等,当事件发生时我们可以针对事件做出一系列的响应,例如退出程序、记录日志等等
简单来说用户触发一个动作,这个动作类似判断语句中的条件,满足这个条件就执行一段代码,得到一个设定好的反馈,可以将条件当做事件看
在窗体应用程序中每个事件的结果一般都是如打开新窗口或对话框的小窗口等形式
添加事件
添加事件的步骤:在设计器窗口中先选择窗体或控件,然后通过下面方式添加相应事件
添加事件有三种方式:
1)双击窗体或控件,这种方式添加的是窗体或控件最常用的事件(有可能添加的不是当前所需要的)如按钮的单击事件,窗体的载入事件等
2)通过在属性窗口的"闪电图标"窗口下选择当前需要的事件,双击即可
3)通过代码添加事件(暂时忽略)
注意:每个窗体或控件可以添加多种不同的事件,当触发某个事件时就执行某个事件中的代码;如单击登陆按钮,让按钮变大,双击登陆按钮,按钮变为原来的大小等等
当添加事件后会打开事件的代码编辑窗口
示例1:为登陆按钮添加单击事件;单击登陆按钮时,如果文本框中用户名是:张三,密码是:123456,两个文本框背景色变为蓝色,如果不是变为红色(相当于用户名或密码输入有误)
给用户一个反馈:如果输入正确都变为蓝色,如果输入错误都变为红色
参照昨天为此界面中窗体与各个控件的Name属性值
//当单击属性窗口的Click事件时,自动添加下面的事件方法
private void btnLogin_Click(object sender, EventArgs e)
{
//在此事件方法中编写要执行的代码
}
//==============================================
//单击登陆按钮时触发按钮的单击事件,执行其中的代码
private void btnLogin_Click(object sender, EventArgs e)
{
//FLogin f = new FLogin();
//this 表示当前窗口 相当于上面的 f
//if (f.txtName.ToString() == "张三" && f.txtPwd.ToString() == "123456")
//使用 this 比 f 方便,因此统一使用this
//通过this可以点出来窗体的属性,方法
//事件与 此窗体中所有的控件(Name属性)
if (this.txtName.ToString() == "张三" &&this.txtPwd.ToString() == "123456")
{
//this.txtName 表示此窗体中的用户名称 文本框
//this.txtName.BackColor 表示 设置文本框的背景色
//this.txtPwd 表示 登陆密码的文本框
this.txtName.BackColor = Color.Blue;
this.txtPwd.BackColor = Color.Blue;
}
else
{
this.txtName.BackColor = Color.Red;
this.txtPwd.BackColor = Color.Red;
}
}
示例2:为重置按钮添加鼠标移入事件;当鼠标进入重置按的范围内,将两个文本框中的背景色设置为黄色并清空文本框中的内容
//重置按钮的鼠标移入事件
private void btnRes_MouseEnter(object sender, EventArgs e)
{
//文本框背景色设置为黄色
this.txtName.BackColor = Color.Yellow;
this.txtPwd.BackColor = Color.Yellow;
//清空文本框的内容
this.txtName.Text = "";
this.txtPwd.Text = "";
}
删除事件
假设添加了错误的事件,想要删除该事件不能只删除上面示例1图中的事件方法,同时必须删除下图中窗体布局生成的代码(简称窗体代码)中单击事件的一行代码(注释掉也行)
FLogin.Designer.cs这个文件中的代码原则上不要修改(除非知道是怎么回事)暂时了解
1)在属性窗口中修改窗口或控件任何属性的值最终都会生成这个类中窗体或控件的相关代码(如果已有属性则修改属性值,如果没有修改的属性,这里会添加修改属性的代码)
2)在设计器窗口中拖拽或双击控件改变控件大小或添加事件,在这个窗体代码的类中都会添加相应的代码
假设在窗口中设置登陆按钮的前后背景色,FLogin.Designer.cs这个类就会添加相应的代码;设置前景色为红色,背景色为黄色
现阶段:1)添加控件只要拖拽工具箱中的控件即可 2)设置选中控件的属性通过属性窗口即可 3)添加对应的事件,通过属性窗体添加即可,其他方式暂不予理会
窗体与控件的属性,方法与事件的相关小知识太多,图文没有视频方便展开,只能简单讲解一些,因此不会一一举例说明,只能通过之后用到相关的知识时再细说
猜你喜欢
- 2024-12-03 137.Python——PySide6:QInputDialog输入对话框的创建与使用
- 2024-12-03 云中忆低代码之【开关】组件
- 2024-12-03 微信8.0.28正式更新!发现6个实用功能,朋友圈新增访问权限
- 2024-12-03 Word文档如何不显示回车符?让你的文档更美观
- 2024-12-03 「Excel技巧」恼人的数据透视表之怎么去掉(空白)
- 2024-12-03 随手写个接口测试工具,让领导瞧瞧我的能耐
- 2024-12-03 topjui easyui:combobox(下拉列表应用)
- 2024-12-03 学会这两招,PS换行不求人!轻松实现文本排版,小白也能秒变高手
- 2024-12-03 如何在Excel中使用斜线,并在表格的标题中使用单斜线或双斜线
- 2024-12-03 哇塞!这款PPT插件简直太OK了!PPT新手狂喜!网友:就服气它
- 1509℃桌面软件开发新体验!用 Blazor Hybrid 打造简洁高效的视频处理工具
- 532℃Dify工具使用全场景:dify-sandbox沙盒的原理(源码篇·第2期)
- 495℃MySQL service启动脚本浅析(r12笔记第59天)
- 474℃服务器异常重启,导致mysql启动失败,问题解决过程记录
- 472℃启用MySQL查询缓存(mysql8.0查询缓存)
- 452℃「赵强老师」MySQL的闪回(赵强iso是哪个大学毕业的)
- 431℃mysql服务怎么启动和关闭?(mysql服务怎么启动和关闭)
- 428℃MySQL server PID file could not be found!失败
- 最近发表
- 标签列表
-
- c++中::是什么意思 (83)
- 标签用于 (65)
- 主键只能有一个吗 (66)
- c#console.writeline不显示 (75)
- pythoncase语句 (81)
- es6includes (73)
- windowsscripthost (67)
- apt-getinstall-y (86)
- node_modules怎么生成 (76)
- chromepost (65)
- c++int转char (75)
- static函数和普通函数 (76)
- el-date-picker开始日期早于结束日期 (70)
- js判断是否是json字符串 (67)
- checkout-b (67)
- localstorage.removeitem (74)
- vector线程安全吗 (70)
- & (66)
- java (73)
- js数组插入 (83)
- linux删除一个文件夹 (65)
- mac安装java (72)
- eacces (67)
- 查看mysql是否启动 (70)
- 无效的列索引 (74)