2

私は次のコードを持っています(簡略化):

private ContextMenuStrip createContextMenuStrip(Card card)
{
    ContextMenuStrip cms = new ContextMenuStrip();
    cms.Items.Add("Send to the top of the deck", null, sendToDeck);
    return cms;
}

public void sendToDeck(object sender, EventArgs e)
{
    // **
}

クラスCardには type のメンバーがありPictureBoxます。このPictureBox上に、ContextMenuが作成されます。これはこれまでのところ完全に機能しますが、次のようになります。

ここでは、クリックされた PictureBox の を含む対応する Card クラスのインスタンスにアクセスしますContextMenu

これを達成するためにどのような可能性が必要ですか?

4

2 に答える 2

2

Controlコントロールにリンクされたデータを格納できるTagタイプのプロパティがあります。objectあなたの場合、カードを保存できます:

private ContextMenuStrip createContextMenuStrip(Card card)
{
    ContextMenuStrip cms = new ContextMenuStrip();
    var item = cms.Items.Add("Send to the top of the deck", null, sendToDeck);
    item.Tag = card; // so you have the card in your contextmenu
    return cms;
}

その後、イベントで回復できます

public void sendToDeck(object sender, EventArgs e)
{
    var card = (Card)((Control)sender).Tag;
}
于 2013-09-10T15:48:30.117 に答える