C# 从控件 sender 操作当前控件

##前提
今天通过动态生成一系列TextBox控件后,想要实现鼠标移动(MouseMove)到控件上方时,当前TextBox控件变色,鼠标移开(MouseLeave)恢复颜色。

如果手动添加TextBox控件时很好实现,只需实现MouseMove和MouseLeave的点击事件就行。
只需这样:

      private void textBox1_MouseMove(object sender, MouseEventArgs e){textBox1.BackColor = Color.Orange;}private void textBox1_MouseLeave(object sender, EventArgs e){textBox1.BackColor = Color.White;}

可是动态生成的控件,当鼠标点击时,却不知道该控件是哪个控件,需要想办法确认该控件的ID。

这时,我想到了经常被我们忽略的sender。

// 就是这个 object sender  !private void textBox1_MouseMove(object sender, MouseEventArgs e){textBox1.BackColor = Color.Orange;}

sender是引发这个事件的object,你点击控件时,该控件被封装成object类型,所以你可以通过强转,获取你点击的那个控件:

//转换
TextBox textBox = (TextBox)sender;
//然后可以操作该控件

转换后你就可以操作这个控件了。

大体代码如下:

//创建一个list,用来放入TextBox控件public List<TextBox> TextBoxesCodeList = new List<TextBox>(); //接下来循环生成TextBox控件for (int i = 0; i <= MaxNum; i++){TextBoxesCodeList.Add(new TextBox(){//以下属性根据你的实际需求编写TextAlign = HorizontalAlignment.Center,ReadOnly = true,Dock = DockStyle.Fill,BackColor = Color.FromArgb(250, 249, 222),});//定义控件的鼠标移开 移出的事件//鼠标移动到控件上方变色,移出恢复TextBoxesCodeList[i].MouseMove += ChangeTextColor;TextBoxesCodeList[i].MouseLeave += RecoverTextColor;
}上下两边代码不在同一方法中,我偷懒了///#region 鼠标移动到控件上方变色private void RecoverTextColor(object sender, EventArgs e){TextBox textBox = (TextBox)sender;textBox.BackColor = Color.FromArgb(250, 249, 222);}private void ChangeTextColor(object sender, MouseEventArgs e){TextBox textBox = (TextBox)sender;textBox.BackColor = Color.Orange;}#endregion

效果如下:
鼠标移开:

鼠标经过:

C# 从控件 sender 操作当前控件相关推荐

  1. C#多线程操作界面控件的解决方案

    C#中利用委托实现多线程跨线程操作 - 张小鱼 2010-10-22 08:38 在使用VS2005的时候,如果你从非创建这个控件的线程中访问这个控件或者操作这个控件的话就会抛出这个异常.这是微软为了 ...

  2. C# 采用系统委托的方式处理线程内操作窗体控件(转载)

    C# 采用系统委托的方式处理线程内操作窗体控件 C# / asp.net / j 2009-12-25 10:04:47 阅读138 评论0   字号:大中小 订阅 一.System.Windows. ...

  3. C#线程操作UI控件

    在写winform程序时候,如果时间长的操作不用线程操作.那么会卡死UI,点击界面就体现为未响应.为此需要对耗时操作用线程处理,比如检验的监听程序就是一个死循环,不停检查文件夹或数据库又没有数据,然后 ...

  4. 『Winform』C# Winform WebBrowser控件中操作网页元素大全

    文章目录 1.获取非input控件的值 2.获取input控件的值 3.给输入框赋值 4.CheckBox选中 5.根据已知有ID的元素操作没有ID的元素 6.获取Div或其他元素的样式 7.直接执行 ...

  5. vc mysql控件_VC++使用ActiveX控件连接和操作数据库

    VS2008运用ActiveX控件连接和操作数据库关闭时一直有个内存释放的错误,好像使用VC6.0会多生成2个文件,就不会有问题. VC++使用ActiveX控件连接和操作数据库的方法分两种: 1.通 ...

  6. jQuery操作Select2控件

    Select2控件 将普通的select控件,转换为select2控件,通过select2()方法 将某个select控件,转换为select2 $('#selectId').select2({wid ...

  7. view类不响应自定义消息_安卓平台如何给控件添加自定义操作?

    在安卓应用设计和开发过程中,设计人员为了界面简洁.有独特的交互方式,可能会为控件设计特殊的操作手势,例如消息列表中单指按住消息向左滑删除消息:系统顶部的通知单指向左滑可以关闭通知等. 这些操作对于普通 ...

  8. c#多线程操作界面控件的简单实现

    一个小功能,早有人实现了.自己在一个项目中用到,觉得有必要记录一下,写下来. 代码 从上面你可能已经看出如何多线程操作同一个控件的,就是通过一个委托,然后定义委托方法,判断控件的InvokeRequi ...

  9. cs文件,外部类操作窗体控件

    前期操作 在progiam.cs文件中添加代码 添加cs文件 1.修改控件属性办法 修改控件属性 外部cs文件修改 form1.cs文件修改 运行成功 2.通过属性的方式 在form1.cs文件添加 ...

最新文章

  1. 不说技术~我需要调整自己,最近整整两天状态不是很好
  2. Django02: pycharm上配置django
  3. Yarn 国内加速,修改镜像源
  4. Python matplotlib画图出现No handles with labels found to put in legend
  5. java非静态内部类如何创建对象实例
  6. 【职业】什么是架构师?
  7. PyS2:RDD编程基础(一)
  8. EMOJI表情包源码
  9. 【电脑办公软件有哪些】万彩办公大师教程丨PDF分割帮助文档
  10. 高层建筑的定义及分类
  11. (个人)VR实时交互的太极拳学习系统创新实训第一周(2)
  12. 混乱与整齐-布局-PCB系列教程1-12
  13. 十二、基于多源数据建成区提取——Landsat数据多光谱、全色数据融合
  14. 百度飞桨图像分类------第三天(实现蝴蝶图像分类)
  15. python图片相似度计算_python Opencv计算图像相似度过程解析
  16. 论文修改内容,第一篇
  17. arcgis密度分析
  18. python bottle使用实例
  19. 计算机应用基础网考模拟题,计算机应用基础网考全真模拟试题..doc
  20. Photoshop7.0教程(八)编辑文字

热门文章

  1. SQL语句——处理函数
  2. vue树形权限菜单_vue实现树形菜单步骤说明
  3. 计算机系的同学应该有更高的雄心壮志
  4. intuitionistic fuzzy set 运算规则python实现
  5. iOS 仿微信发送语音消息按钮 - 语音录音机(二)
  6. 干扰素相关研究最新进展(2022年4月)
  7. java移位加密_凯撒加密解密(java字母移位)
  8. 计算机三级嵌入式学习笔记(一)
  9. 远程唤醒WOL启动服务器或电脑
  10. gnome-screenshot截屏快捷启动