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文本的主要内容,如果未能解决你的问题,请参考以下文章