C#Windows窗体-MenuItem单击事件-获取MenuItem文本
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C#Windows窗体-MenuItem单击事件-获取MenuItem文本相关的知识,希望对你有一定的参考价值。
如何获得已单击的任何给定菜单项的文本?
菜单是动态填充的,因此似乎仅限于此:
Menu.MenuItems.Add(new MenuItem("MenuName", new EventHandler(menu_click)));
不幸的是,我看不到Eventhandler具有已单击的菜单项的文本/名称。
有没有解决的办法?
答案
这是什么类型的菜单?
因为您似乎将事件直接附加到菜单项,所以我猜想发送者就是您要寻找的..
private void menu_click(object sender,EventArgs e)
MenuItem mi = sender as MenuItem;
//Access the clicked item here..
string text = mi.Text; //Guess its called text ?
另一答案
您的事件处理程序将被赋予引发事件的对象作为“发送者”参数。您必须将其转换为MenuItem,然后检查其“ Text”属性:
public void MenuClickHandler(object sender, EventArgs e)
var menuItem = (MenuItem)sender;
var menuText = menuItem.Text;
另一答案
事件处理程序应具有object sender
参数。如果将其强制转换为MenuItem
,则应该可以访问Header
属性。
void menu_click (object sender, EventArgs e)
var clickedItem = sender as MenuItem;
if (clickedItem == null) return;
if (clickedItem.HasHeader)
var text = clickedItem.Header;
另一答案
使用标准的.NET事件处理程序功能签名...
(sender as Object, e as EventArgs) ' VB.NET syntax
...在事件处理程序中,可以将sender
强制转换为MenuItem
并访问所有属性。
另一答案
您可以将发送方对象转换为菜单项并检索文本。
样本代码
Menu.MenuItems.Add(new MenuItem("MenuName", (o, ev) =>
MessageBox.Show((o as MenuItem).Text);
));
以上是关于C#Windows窗体-MenuItem单击事件-获取MenuItem文本的主要内容,如果未能解决你的问题,请参考以下文章
C# Windows 窗体 - 带有事件的不可见元素(单击和 MouseEnter/Leave)
单击控件后,C#Windows窗体/用户控件不能用鼠标滚轮滚动[复制]