前言

首先ContextMenuStrip和ContextMenu的区别是版本不同,Vs05中ContextMenuStrip替代了ContextMenu的,并且更强大,但是依然保留了ContextMenu,所以会看到两个类型同时出现,不必茫然,就用ContextMenuStrip吧。

动态创建ContextMenuStrip并关联到控件的方法如下

 void LoadMenustrip(Control Control){ContextMenuStrip ms = new ContextMenuStrip();ms.Items.Add("全选(Ctrl+A)");ms.Items.Add("复制(Ctrl+C)");ms.Items.Add("粘贴(Ctrl+V)");ms.Items.Add("删除(Delete)");ms.ItemClicked += new ToolStripItemClickedEventHandler(ms_ItemClicked);Control.ContextMenuStrip = ms;}

调用LoadMenustrip(TheControl)后就会在TheControl上关联一个ContextMenuStrip,同时还为这个ContextMenuStrip的ItemClicked绑定一个事件:ms_ItemClicked,也就是在点菜单上的某一项事引发的事件

ms_ItemClicked 事件处理,在这里sender获得的是这个ContextMenuStrip对象,e获得的是触发事件的Item参数,那么就有很多人在问如何获得触发这个事件的ContextMenuStrip相对应关联的控件呢?(也就是关联这个ContextMenuStrip的那个控件)
其实很简单,ContextMenuStrip有一个属性SourceControl,他就是和这个ContextMenuStrip相关联的那个控件了,类型自己转换一下就可以了。

另外,我没有找到任何获取触发这个事件的Item的索引和其他信息的方法,可以获取文本,但是很多时候我们不可能通过文本判断,因此,我用了直接比对对象的方法,

((ContextMenuStrip)sender).Items[1] == e.ClickedItem

也就是获取ContextMenuStrip本身的各个Item比对触发事件的Item。

除了获取关联控件,代码中的其他代码主要是处理剪贴板,和本文关系不大,不做介绍!

void ms_ItemClicked(object sender, ToolStripItemClickedEventArgs e){TextBox tb = ((TextBox)((ContextMenuStrip)sender).SourceControl);if (((ContextMenuStrip)sender).Items[0] == e.ClickedItem){tb.SelectAll();}else if (((ContextMenuStrip)sender).Items[1] == e.ClickedItem){Clipboard.SetDataObject(tb.SelectedText);}else if (((ContextMenuStrip)sender).Items[2] == e.ClickedItem){IDataObject iData = Clipboard.GetDataObject();if (iData.GetDataPresent(DataFormats.Text)){tb.Text += (String)iData.GetData(DataFormats.Text);}}else if (((ContextMenuStrip)sender).Items[3] == e.ClickedItem){tb.Text = "";}}

其实关于控制文本框的复制、粘贴、剪切等 WINFORM的TextBox都有对应的方法,可以不用控制剪贴板,控制剪贴板还要控制光标位置,比较麻烦点。

复制 TextBox.Copy();

粘贴 TextBox.Paste();

剪切 TextBox.Cut();

全选 TextBox.SelectAll();

如果还是想直接通过剪贴板,那么控制光标起始位置可以使用 TextBox.SelectionStart 属性完成。

研究得还不是很全面,其他方面的内容,等学习到再记录

ContextMenuStrip右键菜单 获取关联控件、判断点击相关推荐

  1. C# 系统应用之ListView控件 (三).添加ContextMenuStrip右键菜单打开删除文件

    在前面讲述过使用TreeView控件和ListView控件显示磁盘目录信息,但仅仅是显示信息是不够的,我们还需要具体的操作.在"个人电脑使用历史痕迹"项目中我还需要添加" ...

  2. MenuStrip(主菜单)、ContextMenuStrip(右键菜单)的即时状态的获取方法

    1.如何正确的显示MenuStrip某一菜单下面的复制.剪切.粘贴菜单项的即时状态: private void mi_Edit_DropDownOpened(object sender, EventA ...

  3. html 表格,列表,表单,select和下拉选框,textarea多行文本域,label关联控件,表单,浮动框架,结构化标签

    1. 表格 表格的语法 (1) table标签: 表示表格的开始和结束.表格的所有内容都需要写在这一对标签里 (2) tr标签: 表示表格中的一行 table row (3) td标签:要写在tr中, ...

  4. c# tooltip 取消关联控件

    在给用户操作提示时,比如登录错误详细信息提示,使用控件的OnMouse方法,显得比较大材小用,可使用toolTip关联控件的方式 创建一个ToolTip对象 使用SetToolTip方法(提供控件和提 ...

  5. android 随机坐标,按键精灵安卓版如何随机坐标判断点击.在线等大神回复

    / '定义一些常用变量:IntX IntY 找色模块返回值用,win_x win_y 屏幕分辨率用,win_w win_h 分辨率比例用 Dim x,y Dim IntX,IntY Dim win_x ...

  6. 转:C#判断ContextMenuStrip右键菜单的来源(从哪个控件弹出来的)

    转载自:http://hi.baidu.com/cookiemulan/item/82df8ff867dd53cc531c26c7 有时候,为了提高性能和节约资源,我们会为多个控件,指定同一个右键弹出 ...

  7. C#遍历ContextMenuStrip右键菜单中包含子菜单的所有菜单并添加事件

    今天写程序的时候,用到了右键菜单控件ContextMenuStrip,真的很方便,写了几个菜单与子菜单项,本来是可以用双击来给每一个菜单添加事件的,不过,这样做似乎非常麻烦,而且对一些子菜单也不容易控 ...

  8. Winform中怎样设置ContextMenuStrip右键菜单的选项ToolStripMenuItem添加照片

    场景 怎样在Winform程序中添加鼠标右键时使子选项显示图片. 注: 博客主页: https://blog.csdn.net/badao_liumang_qizhi 关注公众号 霸道的程序猿 获取编 ...

  9. 在OnLButtonDown获取其他控件被点击的消息

    在网上找了一下,在群里网友说用什么hook,搜了一下,hook基本上截获鼠标或控件的消息,但是我是要实现在OnLButtonDown全局事件里捕获某控件被点击的消息,突然在CSDN中搜到了一篇说是可以 ...

最新文章

  1. linux bin su,linux – su:/ bin / bash:资源暂时不可用
  2. MySQL如何访问Postgres
  3. 每个星座对应的天使。
  4. 算法十大排序(含动图)
  5. 多出去面试,好处多多!
  6. nodejs 模板引擎ejs的使用
  7. 孙鑫mfc学习笔记第十二课
  8. python计算器函数图像_Python图形计算器,python,图像,化
  9. Win10:fastboot驱动问题解决方案
  10. 西瓜创客的python_西瓜创客Python客户端
  11. 电气simulink常用模块_自动化设备电气图纸常用元件符号
  12. pxe网络安装服务器的部署
  13. 再谈 共轭方向法/Conjugate Direction Method In Optimization
  14. 浅谈自媒体带货底层逻辑及公众号变现操作路径
  15. 计算机王道PDF408
  16. Android Activity 设置背景图片
  17. fedora 20 安裝 及 配置桌面環境
  18. 稳压二极管和TVS二极管的区别
  19. win10安装win7虚拟机记录
  20. 什么是HTTPS协议?HTTPS协议优势有哪些?

热门文章

  1. 三菱fx3u plc程序自己写的三菱fx3u程序 有伺服定位控制 触摸屏 模拟量 FB模块 编程方式很清楚明了
  2. linux的UDP通信编程
  3. [学习笔记] ubuntu 下 anaconda 安装 pytorch
  4. layui的demo
  5. 给电子开发工程师的建议
  6. Android 隐藏LinearLayout
  7. EXCEL:Excel2007中的数据分析工具在哪里?
  8. 【捷凡阁】带你分享几个赚钱小连招
  9. 16个触摸按键,16个8段LED数码管大电流自动刷新,STC8H4K64TL
  10. Java ssl证书过期_SSL证书过期问题解决