gpt4 book ai didi

C# 从上下文菜单创建的单击事件获取实例

转载 作者:行者123 更新时间:2023-12-02 19:35:14 24 4
gpt4 key购买 nike

我有以下代码(简化):

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)
{
// **
}

类(class)Card有一个 PictureBox 类型的成员。关于这个PictureBoxContextMenu将被创建。到目前为止,这工作得很好,但是:

这里我想访问相应的Card类的实例,其中包括单击的PictureBox的ContextMenu .

我有哪些可能性可以实现这一目标?

最佳答案

您可以使用 lambda expression它可以引用您的 card 变量(请参阅“Lambda 表达式中的变量范围”)并将其传递给您的方法:

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

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

但是,假设您不关心提供对象发送者EventArgs e,它就会变成:

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

public void sendToDeck(Card card)
{
// **
}

关于C# 从上下文菜单创建的单击事件获取实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18723116/

24 4 0