没有合适的资源?快使用搜索试试~ 我知道了~
浅析C#中object-sender与EventArgs-e
需积分: 12 6 下载量 158 浏览量
2022-10-19
08:58:34
上传
评论
收藏 32KB DOC 举报
温馨提示
试读
5页
浅析C#中object_sender与EventArgs_e
资源详情
资源评论
资源推荐
一、了解 C#中的预定义事件处理机制
在写代码前我们先来熟悉.net 框架中和事件有关的类和委托,了解 C#中预定义事件的
处理。
EventArgs 是包含事件数据的类的基类,用于传递事件的细节。
EventHandler 是一个委托声明如下
public delegate void EventHandler( object sender, EventArgs e )
注意这里的参数,前者是一个对象(其实这里传递的是对象的引用,如果是 button1的 click
事件则 sender 就是 button1),后面是包含事件数据的类的基类。
下面我们研究一下 Button 类看看其中的事件声明(使用 WinCV 工具查看),以 Click
事件为例。
public event EventHandler Click;
这里定义了一个 EventHandler 类型的事件 Click
前面的内容都是 C#在类库中已经为我们定义好了的。下面我们来看编程时产生的代码。
private void button1_Click(object sender, System.EventArgs e)
{
...
}
这是我们和 button1_click 事件所对应的方法。注意方法的参数符合委托中的签名(既
参数列表)。那我们怎么把这个方法和事件联系起来呢,请看下面的代码。
this.button1.Click += new System.EventHandler(this.button1_Click);
把 this.button1_Click 方法绑定到 this.button1.Click 事件。
下面我们研究一下 C#事件处理的工作流程,首先系统会在为我们创建一个在后台监听
事件的对象(如果是 button1的事件那么监听事件的就是 button1),这个对象用来产生事件,
如果有某个用户事件发生则产生对应的应用程序事件,然后执行订阅了事件 的所有方法。
二、简单的自定义事件(1)
首先我们需要定义一个类来监听客户端事件,这里我们监听键盘的输入。
定义一个委托。
public delegate void UserRequest(object sender,EventArgs e);
前面的 object 用来传递事件的发生者,后面的 EventArgs 用来传递事件的细节,现在
暂时没什么用处,一会后面的例子中将使用。
下面定义一个此委托类型类型的事件
public event UserRequest OnUserRequest;
下面我们来做一个死循环
public void Run()
{
bool finished=false;
do
{
if (Console.ReadLine()=="h")
{
OnUserRequest(this,new EventArgs());
}
}while(!finished);
}
xieqingyao888
- 粉丝: 0
- 资源: 8
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- MyBatis动态SQL是一种强大的特性,它允许我们在SQL语句中根据条件动态地添加或删除某些部分,从而实现更加灵活和高效的数据
- MyBatis动态SQL是一种强大的特性,它允许我们在SQL语句中根据条件动态地添加或删除某些部分,从而实现更加灵活和高效的数据
- MyBatis动态SQL是一种强大的特性,它允许我们在SQL语句中根据条件动态地添加或删除某些部分,从而实现更加灵活和高效的数据
- Docker在Ubuntu16.04上安装和部署Apache Storm
- test_kong.zip
- springboot权限验证学习-下
- SeetaFace6人脸质量评估C++代码实现Demo
- OCAuxiliaryTools
- 制药公司QC顶岗实习专题报告
- Rust 全面指南:从基础到高级,一网打尽 Rust 的编程知识
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0