ContextMenuStrip右键菜单获取关联控件、判断点击 vb.net 控件 右键菜单

很少做WINFORM的项目

今天偶有触及,遇到一个使用ContextMenuStrip的小问题

研究得不算深,不过也解决一些网上经常有人问的小问题。

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

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

void LoadMenustrip(Control Control)
{
ContextMenuStrip ms = new ContextMenuStrip();

ms.Items.Add("全选(Ctrl+A)");
ContextMenuStrip右键菜单获取关联控件、判断点击 vb.net 控件 右键菜单
ms.Items.Add("复制(Ctrl+C)");
ms.Items.Add("粘贴(Ctrl+V)");
ms.Items.Add("删除(Delete)");

ms.ItemClicked += newToolStripItemClickedEventHandler(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, ToolStripItemClickedEventArgse)
{

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 属性完成。

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

  

爱华网本文地址 » http://www.aihuau.com/a/25101017/364626.html

更多阅读

迅雷会员账号获取器怎么用 迅雷白金会员账号获取

迅雷会员账号获取器怎么用——简介小编用来迅雷会员账号获取器有一段时间了,能用是一定的。安装使用都很简单。今天小编主要讲关于迅雷会员账号获取器怎么用,它的坏处,和如果不用这软件,怎么获取迅雷的会员账号。迅雷会员账号获取器怎

还原精灵怎么卸载 精 一键还原精灵怎么卸载

还原精灵怎么卸载 精——简介还原精灵程序的卸载有两种方法,还原精灵怎么卸载 精——工具/原料电脑还原精灵程序还原精灵怎么卸载 精——方法一还原精灵怎么卸载 精 1、首先在电脑桌面点击(开始)键,再点击(所有程序)。还原精灵怎么卸

怎样设置合适的系统窗口颜色来保护眼睛 win8系统眼睛保护色

在这个信息社会,我们使用电脑的次数越来越多了,怎么保护自己的眼睛处于一个良好的状态呢?可以通过设置合适的系统窗口颜色来保护眼睛,下面来看一下操作方法。怎样设置合适的系统窗口颜色来保护眼睛——步骤/方法怎样设置合适的系统窗口

声明:《ContextMenuStrip右键菜单获取关联控件、判断点击 vb.net 控件 右键菜单》为网友细收沧桑白发分享!如侵犯到您的合法权益请联系我们删除