object sender ,EventArs e
引用:http://blog.csdn.net/kongbai308416350/article/details/4233786
说的通俗一些,就是:
有一个叫做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语言中的事件处理函数,它是在运行时由系统调用的,因此它的参数不会变化,就好像我们写方法时的方法名一样。

object sender ,EventArs e的更多相关文章
- 关于(object sender, EventArgs e)
sender是事件源 就是指发起这个事件的对象(控件)//表示触发事件的那个控件比如说你按下按钮,那么sender就是按钮 又如:textboxchange,sender就是该textbox,在事 ...
- C#之winform基础 button1_Click(object sender, EventArgs e)中sender是啥及其用法
镇场诗: 大梦谁觉,水月中建博客.百千磨难,才知世事无常. 今持佛语,技术无量愿学.愿尽所学,铸一良心博客.---------------------------- ...
- (object sender,EventArgs e)是什么?
object sender:发出事件的对象 EventArgs e:对象中的数据
- C#中object sender,EventHandler e有个毛作用
button1_Click(object sender,EventHandler e) { Button button=(Button)sender; button.Text="text p ...
- 浅析C# 中object sender与EventArgs e (转)
一.了解C#中的预定义事件处理机制 在写代码前我们先来熟悉.net框架中和事件有关的类和委托,了解C#中预定义事件的处理. EventArgs是包含事件数据的类的基类,用于传递事件的细节. Ev ...
- WinForm事件中的Object sender和EventArgs e参数
Windows程序有一个事件机制.用于处理用户事件. 在WinForm中我们经常需要给控件添加事件.例如给一个Button按钮添加一个Click点击事件.给TextBox文本框添加一个KeyPress ...
- object sender, LinkLabelLinkClickedEventArgs e 参数解释
开始是一个LinkLabel 控件,LinkLabel 绑定了Clicke事件 LinkLabel Delete = new LinkLabel(); Delete.Text = "删除&q ...
- 委托与事件代码详解与(Object sender,EventArgs e)详解
委托与事件代码详解 using System;using System.Collections.Generic;using System.Text; namespace @Delegate //自定义 ...
- checkBox1_CheckedChanged(object sender, EventArgs e)和checkBox1_CheckStateChanged(object sender, EventArgs e)不同
using System; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms ...
随机推荐
- 解决VS2008 开发Windows Mobile 项目生成速度慢的问题
最近用VS2008开发Windows Mobile程序,使用C#..NET Compact Framework,发现项目生成速度比较慢.用VS2008打开项目后,开始一段时间生成速度还能忍受,时间一长 ...
- Android开发-API指南-数据存储
Storage Options 英文原文:http://developer.android.com/guide/topics/data/data-storage.html 采集日期:2015-02-0 ...
- [翻译]你不会想知道的kobject,kset,和ktypes
---------------------------------------------------------------------------------------------------- ...
- 慕课网-安卓工程师初养成-2-5 如何命名Java变量
来源:http://www.imooc.com/code/1221 如同酒店会给每个房间起个性化的名字一样,程序中的变量也需要用合理的名字进行管理---变量名! 需要注意,给酒店房间起名字时可以是数字 ...
- Google Protocol Buffer 协议
1. Protocol Buffers 简介 Protocol Buffers (ProtocolBuffer/ protobuf )是Google公司开发的一种数据描述语言,类似于XML能够将结构化 ...
- 采用FLAG_ACTIVITY_CLEAR_TOP退出 多activity 或 整个程序
问题: 多activity中退出整个程序,例如从A->B->C->D,这时我需要从D直接退出程序. 网上资料:{ finish()和system(0)都只能退出单个activity. ...
- Oracle 学习系列之二(会话与事务级临时表和dual表 )
一. 会话临时表 --创建会话临时表create global temporary table tmp_user_session(user_id int, user_name varchar2(20) ...
- hdu 3336【Count the string】(KMP)
一道字符串匹配的题目,仅仅借此题练习一下KMP 因为这道题目就是要求用从头开始的n个字符串去匹配原来的字符串,很明显与KMP中求next的过程很相似,所以只要把能够从头开始匹配一定个数的字符串的个数加 ...
- 使用CORS:跨域两三事
本文为译文. 简介 APIS是可以将富网页应用串连在一起的线程.但是这个应用难以转给浏览器,跨域请求技术的选择被限制了,类似JSONP(由于安全考虑,使用会被限制),或者配置代理(设置和维护都比较头痛 ...
- Material Design参考资料
传送门: http://www.uisdc.com/comprehensive-material-design-note