单击后获取有关C#菜单项的信息

时间:2013-09-04 05:01:41

标签: c# winforms drop-down-menu

来自C#newbie的另一个问题 - 我想使用单个函数来响应菜单中提供的选项列表。当我在调试模式下运行时,我可以将鼠标悬停在发送方上,很明显发送方拥有我需要的信息,菜单中项目的索引和与之关联的文本。但是,我还没有弄清楚如何以我得到的方式编写代码。以下内容无法编译:

int device;
private void myMenuItemInputClick(object sender, EventArgs e)
{
    device = sender.Index;
}

当我在myMenuItemInputClick上设置断点并将鼠标悬停在发件人上时,我看到的是:

  

sender {Windows.System.Forms.MenuItem,Items.Count:0,Text:Stereo Mix(Realtek High Defini}

将鼠标移到“+”符号上,使其成为“ - ”,调试语句列表下拉显示有一个项目索引正是我想要的。如何编写能够获得我正在寻找的项目的代码?

2 个答案:

答案 0 :(得分:2)

将发件人转换为MenuItem可能会解决此问题。

int device;
private void myMenuItemInputClick(object sender, EventArgs e)
{
    device = ((MenuItem)sender).Index;
}

提到的变异Bharath就像是,

int device;
private void myMenuItemInputClick(object sender, EventArgs e)
{
    var menuItem = sender as MenuItem;
    if(menuItem != null)
        device = menuItem.Index;
}

答案 1 :(得分:0)

尝试将sender对象转换为您正在处理的类型。您应该能够获取属性。

E.g。

var menuItem= sender as MenuItem;
menuItem.Index