0

C# 初心者からの別の質問 - メニューで提供される選択肢のリストに応答するために単一の関数を使用したいと思います。デバッグ モードで実行すると、送信者の上にマウスを置くと、送信者が必要な情報 (メニュー内の項目のインデックスとそれに関連付けられたテキストの両方) を持っていることが明らかです。ただし、探しているものを取得する方法でコードを記述する方法を理解していません。以下はコンパイルされません。

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}

マウスを「+」記号の上に移動すると、「-」になり、デバッグ ステートメントのリストがドロップダウンして、まさに必要な項目 Index があることが示されます。探しているアイテムを取得するコードをどのように記述すればよいですか?

4

2 に答える 2

2

送信者を MenuItem にキャストすると、この問題が解決する可能性があります。

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

バーラトが言及したバリエーションは、次のようなものです。

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 に答える