0

来自 C# 新手的另一个问题 - 我想使用单个函数来响应菜单中提供的选项列表。当我在调试模式下运行时,我可以将鼠标悬停在 sender 上,很明显 sender 具有我需要的信息,包括菜单中项目的索引和与之关联的文本。但是,我还没有想出如何以我想要的方式编写代码。以下不编译:

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

当我在 myMenuItemInputClick 上放置一个断点并将鼠标放在发件人上时,我看到的是:

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

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

4

2 回答 2

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;
}
于 2013-09-04T05:07:18.390 回答
0

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

例如

var menuItem= sender as MenuItem;
menuItem.Index
于 2013-09-04T05:07:03.790 回答