object sender,EventArgs e

解析object sender,EventArgs e 一直想写点《浅析object sender,EventArgs e》的文章,发现很多朋友已经做了,就先转两篇,作个总结吧。http://hi.baidu.com/swdraven/blog/item/3784f0dda5fcc8375882dd07.htmlobject sender,EventArgs e的一些讲解 (转)2007-10-17 18:21 阅读详情

说的通俗一些,就是:

有一个叫做EventHandler 的家伙,他会告诉你(主程序),有一些事情发生了:这个事情是谁导致的呢?是某个object类型对象导致的,它用Source或Sender来表示。这个事情是什么事呢?e的内容就是事情的内容了。

至于Source和Sender,没有区别,你想用哪个就用哪个,其实都是一样的。


所以,我们在程序中的事件处理函数就是依赖于这个东西实现的:比方说你点了一个按钮,程序怎么知道应该用哪个函数来处理这个动作呢?那么EventHandler 这个家伙会告诉程序:"button1(sender)被点击(e)了,请调用对应的处理函数"。当然这个函数是谁,这个函数要做什么,是由你自己写的。

再深入一层,这个过程实际上就是:你的动作被windows捕获,windows把这个动作作为系统消息发送给程序(可以看message结构),程序从自己的消息队列中不断的取出消息,并在消息循环中寻找对应的处理方式,这时message结构中的类似于sender和e的东东就起到了引导程序使用正确的处理函数的作用。

归根究底,这个sender和e及其一整套的处理方式,只不过是windows消息机制的另外一种表现罢了 ^_^


是C#.NET的.
object sender 发出事件的对象 
System.EventArgs e 对象中的数据

如果是按钮button的话,那sender就是那个button, 
e是事件参数,在某些事件里,e用处不大,比如在MouseEventArgs的Mouse事件中,可以看到e包括mouse的坐标值等,以供你的程序使用。

 

 

具体的说来,对于系统提供的类的事件,Sender参数只是简单地传递了指向引发事件的那个类的实例的一个引用,而e是EventArgs类型的参数,它包含了事件所携带的信息。

至于第二个问题,我不是很明白“我看到在很多事件代码中那些代码都是照写(object sender, System.EventArgs e),根本就不用改变sender和e,参数不是应该随实际情况变化的吗?”这句话的意思,比如说一个按钮控件,当它的单击事件被引发时,系统会自动把这个按钮对象作一个类型强制转换然后赋值给Sender,然后传递e。之所以都是这个形式是因为大多数情况下这些简单的事件不需要传递特殊的信息,您可以看一下KeyPress事件,这个事件就包含一个KeyPressEventArgs,包含了按键的信息。

另外需要明确的一个概念就是类似这样形式的方法:
private void Button_Click(object sender, EventArgs e)
这样的方法称为事件处理方法,它类似于C语言中的事件处理函数,它是在运行时由系统调用的,因此它的参数不会变化,就好像我们写方法时的方法名一样。

深入探讨C#中的Object sender与EventArgs e 在C#中,事件处理机制允许对象在发生特定事件时通知订阅者。是一个非常重要的参数,它在事件处理器中作为第一个参数传递。它表示触发事件的对象。此参数是类型的,因此它可以引用任何类型的对象,包括那些派生自的自定义对象。了解sender参数的本质对于理解事件是如何在不同对象间传递非常关键。从委托声明中可以看到,事件处理器被设计成可接收任意对象作为发送者。这种设计使得事件处理非常灵活,可以适用于多种不同的场景。 阅读详情

相关推荐

浅析C#中object-sender与EventArgs-e

浅析C#中object_sender与EventArgs_e

WinForm事件中的Object sender和EventArgs e参数

Windows程序有一个事件机制。用于处理用户事件。 在WinForm中我们经常需要给控件添加事件。例如给一个Button按钮添加一个Click点击事件。给TextBox文本框添加一个KeyPress 键盘按下事件。通过强大的IDE,双击控件就能直接添加一个该控件默认的事件。 private void btnError_Click(object sender, EventArgs e) ...

weixin_33725239的博客 2434

浅析C# 中object sender与EventArgs e

了解C#中的预定义事件处理机制 在写代码前我们先来熟悉.net框架中和事件有关的类和委托,了解C#中预定义事件的处理。 EventArgs是包含事件数据的类的基类,用于传递事件的细节。 EventHandler是一个委托声明如下 public delegate void EventHandler( object sender, EventArgs e ) 注意这里的参数,前者是一个对象(其实这里传递的是对象的引用,如果是button1的click事件则sender就是button1),后面是包含事件数据的类的基类。

浅谈事件处理函数中的参数(object sender, EventArgs e)

(object sender, EventArgs e)是C#常见的事件消息参数,这两个参数具体表示什么意思呢? sender是事件源,表示触发事件的那个组件, 如(button/label/listview...),比如说你单击button,那么sender就是button; EventArgs是事件参数,它用来辅助你处理事件,比如说你用鼠标点击窗体,那么EventArgs是会包含点击的位置等等 e是一个类,存事件要用的数据...

IT技术猿猴的博客 2021

LSF实践专题(15):LSF队列优先级以及抢占功能初探

在LSF暂停作业时,会向作业发送一个SIGTSTP信号,并且将作业状态变成SSUSP(system suspend),表示被系统暂停,这时,最好是作业的应用能够捕获和处理SIGTSTP信号,否则,即使在LSF中,作业会被认为暂停了,并且释放了slots资源,但是在实际OS中,作业进程仍然在继续,并且不会释放CPU等计算资源。是指LSF自动将低优先级作业暂停(suspend),将空余出来的资源交给高优先级队列中的作业使用,等到高优先级队列的作业结束后,再将被暂停的作业恢复(resume)并继续运行。

richycn的博客 1919

ccproxy 6.61 注册机(纯绿/傻瓜/真正去除线程限制)

导读:   软件介绍   1、 CCPROXY 6.61 注册机(纯绿/傻瓜/真正去除线程限制)   ***前言,这次的升级官方改动不大,据说只是为了不被某些软件当病毒***   附件包中解压即免安装版,CcREGTOOLFF.exe为注册机。   本人继续向大家隆重推出《CCPROXY6.61哎呀……破解版》   还是那个提示:   在此之前,本人还是那句老话想提示大家,CCPROXY是

i53nd的专栏 1万+

c#对object sender ,EventArgs e 的解释

当我们生成一个button点击按钮时间的时候,会有这样的一个方法。其中两个参数 object sender,EventArgs e当你双击界面上的“停止”按钮时,Visual Studio 会自动为你生成这个方法。括号里的和是 C# 中所有“事件”(比如点击按钮、移动鼠标、接收设备数据)的标准标配。

like_sunshine978的博客 540

手把手教你用GEM-2多频电磁仪找地下管道(附真实数据图)

本文详细解析了使用GEM-2多频电磁仪精准定位地下管线的全流程,包括设备调试、频率选择、现场扫描技巧及数据解读。通过真实案例展示了如何应对复杂干扰环境,提升管线检测效率与准确性,特别适合市政工程和地下管线普查。

weixin_42565652的博客 398

C#事件中的两个参数(object sender,EventArgs e)

C#窗体程序有很多的时间,比如按钮点击事件,双击事件,Form_Load事件,这些事件的实现里都有两个参数(object sender,EventArgs e),什么意思呢? 我们新建一个窗体程序,双击产生Load事件。 我们可以看到,Form1_Load(object sender, EventArgs e)本质就是一个有两个参数的函数。那么函数怎么能够自己调用自己呢?不能。它肯定咋某个地方...

杰西笔记 1万+

UniApp X 网络请求避坑指南:从 JS 到 UTS 的 JSON 数据处理全解析

摘要:UniAppX开发中处理JSON数据时,UTS强类型特性要求开发者改变JS习惯。本文对比两种主流方案:1)UTSJSONObject通过keypath访问数据,兼容JS但缺乏类型提示;2)type+泛型方案,通过定义数据类型实现强类型校验和智能提示,推荐用于固定数据结构。文章详细演示了两种方式的具体实现、转换方法及实战案例,并提供了类型定义技巧和注意事项,帮助开发者编写更稳定高效的跨平台应用。

归梦工作室 2790

linux离线安装nginx

linux离线安装nginx

zhang_130914036的博客 9347

(object sender, EventArgs e)中的sender 和e有什么用呀?

(object sender, EventArgs e)中的sender 和e有什么用呀?请写段代码解释一下它们的作用,最好详细的解释一下,谢谢各位了!我学的是GUI中的winform e有什么用法呀?“就是你点击的button.可以通过类型转换得到这个button的引用”那sender 在其中扮演什么作用?恳求仔细的说明!最好是代码说明!不胜感激……拖鞋不脱好强呀!

jueng 1433

AURIX™ TC49x芯片手册中文分享(二)

主要内容为第一章、功能模块的特征

xibaofenqi的博客 1563

Asp.Net之Object sender,EventArgs e的认识

  带有Object   sender,EventArgs   e   参数的函数是事件处理函数。sender表示引发此事件的对象,e是事件参数,根据事件的不同,事件参数类型可能不同。但都以EventArgs为基类,普通函数不需要带这些参数。    如:Web控件:  处理函数: protected void smtDownList(object sender, EventArg

Cloud.L 每天一点点~ 2267

结构光三维重建(一)条纹结构光三维重建

在近景三维重建领域,结构光技术可以说是应用最广泛的,尤其在工业领域。该技术目前具有高精度和无视弱纹理等优点,但复杂的室外环境还是会对该技术造成一定程度的干扰。目前用的比较多的结构光分别两大类:线结构光以及条纹结构光。接下来我先来简单介绍一下条纹结构光三维重建,事实上,条纹结构光的原理与双目立体匹配是非常相似的。...

AAAA202012的博客 1万+

DC Error: The power pin VDD on the cell UASA1/CG_X8_Rdsd2pcm is unconnected. (UPF-581)

【代码】DC Error: The power pin VDD on the cell UASA1/CG_X8_Rdsd2pcm is unconnected. (UPF-581)

baidu_34971492的博客 970

C# 函数参数object sender, EventArgs e

object sender:表示触发事件的控件对象 EventArgs e:表示事件数据的类的基类 Windows程序有一个事件机制。用于处理用户事件。 在WinForm中我们经常需要给控件添加事件。例如给一个Button按钮添加一个Click点击事件。给TextBox文本框添加一个KeyPress 键盘按下事件。通过强大的IDE,双击控件就能直接添加一个该控件默认的事件。 1...

滴水石穿 1万+

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

关于(object sender, EventArgs e)

在日常开发中,大多数控件都需要写触发函数,而触发函数中的两个参数 sender 和 e 的作用,就不容小视。看下面的例子:在上面的程序中设计了三个Button控件,他们点击后触发的函数都为Button_OnClick;那么我如何分辨出到底是哪一个Button进行了点击呢,就要用到触发函数中的参数来判断。 protected void Button_OnClick(objec

学无止境! 1万+

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

object sender, EventArgs e什么意思

sender的意思是“寄件人,发送机”等,在C#中每点击一个事件自动生成的参数中都有(object sender, EventArgs e),其实sender就是你所关联的控件,可以通过强制转换得到该控件的引用。private void label1_MouseClick(object sender, MouseEventArgs e) { Label se

Scarlett_OHara的博客 4868

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

object sender,EventArgs e的一些讲解

说的通俗一些,就是:        有一个叫做EventHandler 的家伙,他会告诉你(主程序),有一些事情发生了:这个事情是谁导致的呢?是某个object类型对象导致的,它用Source或Sender来表示。这个事情是什么事呢?e的内容就是事情的内容了。 至于Source和Sender,没有区别,你想用哪个就用哪个,其实都是一样的。 所以,我们在程序中的事件处理函数就是依赖于这个东西实

Finder_Way 3799

object sender和EventArgs e含义

sender是事件源比如说你按下按钮,那么sender就是按钮 又如:textboxchange,sender就是该textbox,在事件处理中就可以用sender代替textbox. 如: (sender as TextBox).Text="fdsaewfsda"; Winfrom程序当中大部分时候是控件 EventArgs是事件参数//该事件传入的参数...

weixin_30894389的博客 180

winform自动生成的控件事件中object sender和EventArgs e是啥玩意

MyEvent?

compro_mise的博客 825

object sender与EventArgs e

说的通俗一些,就是: 有一个叫做EventHandler 的家伙,他会告诉你(主程序),有一些事情发生了:这个事情是谁导致的呢?是某个object类型对象导致的,它用Source或Sender来表示。这个事情是什么事呢?e的内容就是事情的内容了。 至于Source和Sender,没有区别,你想用哪个就用哪个,其实都是一样的。 所以,我们在程序中的事件处理函数就是依赖于这个东西实现的:比

Specialaspnet的专栏 1970
上一篇: 无法将类型为“System.Web.UI.LiteralControl”的对象强制转换为类型“System.Web.UI.WebControls.Text
下一篇: 解决GridView中嵌入CheckBox事件无法响应的问题
junboyboy
博客等级 码龄15年 12粉丝 14原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值