感谢《传智播客》提供的视频

以WPF为例进行讲解

private void Button_Click_1(object sender, RoutedEventArgs e)
{}

以上代码是一个按钮的点击事件,在其他事件中也会发现有一个sender参数,那么这个参数代表什么意思呢?又有怎样的作用?下面就以按钮为例进行说明。

sender:指触发事件的控件,之所以是object类型,是因为button按钮也是一个类,命名空间:System.Windows.Controls。所以讲所有将触发类型的控件定义为object类。object为所有类型的基类

那么怎么在代码中得到当前的控件?看下面的代码。

        private void Button_Click_1(object sender, RoutedEventArgs e){Button btn = (Button)sender;//将sender进行转换,转换成按钮对象。btn.Content = "你点我了";//设置按钮的文本为“你点我了”}

在没有点击按钮之前的显示:

点击按钮之后的显示:

那么这样的话就会存在一个疑问,下面的代码同样可以实现这样的功能,为什么还要按照上边的那么写呢?

        private void Button_Click_1(object sender, RoutedEventArgs e){//Button btn = (Button)sender;//btn.Content = "你点我了";btn1.Content = "你点我了";//btn1为按钮的名字}

疑问解答:

现在需要100个按钮都要实现上边的功能,按照常规的写法就要写100个对应的事件,sender就可以解决这样的问题。

同样,我们在窗体中再添加一个按钮(100个太多了,实践的话使用两个即可)名字为btn2,

接下来设置这个按钮的Click事件,让它在执行时运行Button_Click_1事件,如图:

这样就实现了上述的功能,无需书写100个事件。

以此为基础我们可以对控件进行封装方法。

事件中的sender是什么意思?相关推荐

  1. WPF事件中的sender就是事件源

    可以看到wpf中所有的事件都是这个格式: private void btnTest_Click(object sender, RoutedEventArgs e)   { Button btn = ( ...

  2. 关于后台事件中(object sender, EventArgs e)说明

    sender是事件源 就是指发起这个事件的对象(控件) //表示触发事件的那个控件 比如说你按下按钮,那么sender就是按钮 又如:textboxchange,sender就是该textbox,在事 ...

  3. C#事件中sender的小用法

    C#事件中sender的小用法 开WPF新坑了,看了WPF的炫酷界面,再看看winForm实在是有些惨不忍睹(逃).后面会开始写一些短的学习笔记. 一.什么是sender sender最常见到的情况就 ...

  4. C#事件中sender的小用法(转载)

    C#事件中sender的小用法 开WPF新坑了,看了WPF的炫酷界面,再看看winForm实在是有些惨不忍睹(逃).后面会开始写一些短的学习笔记. 一.什么是sender sender最常见到的情况就 ...

  5. BCB key事件中判断Shift、Alt、Ctrl状态

    BCB key事件中判断Shift.Alt.Ctrl状态: 类似此事件中 void __fastcall TForm1::keydown(TObject *Sender, WORD &Key, ...

  6. 在.NET2.0中如何更简单的使用委托将方法加载到事件中去

    我们知道在System命名空间中,.NET为我们提供了EventHandler的委托,它的原型是delegate void EventHandler(object sender,EventArgs e ...

  7. ArcEngine的鼠标事件中按键判断~

    我们都知道,在.Net的鼠标事件中判断鼠标事件方法如下(以button为例): Private Sub Button1_MouseDown(ByVal sender As System.Object, ...

  8. ListView与.FindControl()方法的简单练习 #2 -- ItemUpdting事件中抓取「修改后」的值

    原文出處  http://www.dotblogs.com.tw/mis2000lab/archive/2013/06/24/listview_itemupdating_findcontrol_201 ...

  9. GridView控件RowDataBound事件中获取列字段值的几种途径

    前台: <asp:TemplateField HeaderText="充值总额|账号余额"><ItemTemplate><asp:Label ID=& ...

最新文章

  1. SSH框架实现仿淘宝购物demo
  2. 【caffe解读】 caffe从数学公式到代码实现1-导论
  3. Delphi开发单机瘦数据库程序要点
  4. 6张图为你分析Kafka Producer 消息缓存模型
  5. 哪吒的师父太乙真人在神仙界是什么咖位的?
  6. 机器学习系列-AdaBoost
  7. python将列表元素全部小写_python实现创建新列表和新字典,并使元素及键值对全部变成小写...
  8. 常见服务器默认管理口地址
  9. 全面吃透JAVA Stream流操作,让代码更加的优雅
  10. SqlServer存储过程中循环的使用
  11. Opengl入门基础-shader着色器画方形并且填颜色
  12. php最大公约数辗转相除程序,[转]辗转相除求最大公约数
  13. 【方向盘】因“双减”失业,厉经9面,终获美团外卖L8的Offer
  14. python程序员是怎么给宝宝取名字的
  15. 神经网络模型可视化工具 Netron | 每日工具推荐
  16. newduba首页怎么去掉_【主页劫持】关于浏览器主页被劫持到毒霸网址大全的解决方法...
  17. 招人啦!硅谷洞察诚招资深科技编辑/记者
  18. 数据预处理Part2——数据标准化
  19. STM32RTC时钟和日历
  20. WAS MDBSample

热门文章

  1. optimistic-dad
  2. MCS-51单片机原理与接口技术--阅读笔记(原创)
  3. 携程滑块,点选文字识别
  4. 手机html怎么打印,1秒搞定!老司机教你如何打印手机照片
  5. EM20在地铁闸机的二维码扫描的应用案例
  6. 精心整理的前端开发必备网站推荐
  7. 自动驾驶——基于五次多项式螺旋线方程的换道曲线规划
  8. 接口的作用和使用实例(何为紧耦合和松耦合)
  9. 普通机房跟模块化机房的区别
  10. 济南大学计算机专业英语第二章,济南大学专业英语考试.doc