gpt4 book ai didi

c# - 为多个对象使用事件处理程序

转载 作者:行者123 更新时间:2023-11-30 16:17:53 25 4
gpt4 key购买 nike

我在 List<myObject> 中有 20 件商品.每个都有一个 UserControl 的实例与之相关。每个对象都可以通过 MenuStrip 访问单击相应项目时需要显示 UserControl。目前,我为它们中的每一个都有一个事件处理程序,这很有效,但我想知道是否存在一种方法来简化它并为所有项目使用一个事件处理程序。

这可能吗?如果是这样,最好的方法是什么。

编辑:其他人能否就此问题提供任何意见?我对 Mailo 的回答有疑问。基本上我需要做的就是制作一个可以显示适当的事件处理程序 UserControl存储在 List<myObject> 中当单击正确的 MenuStrip 项时作为属性。有没有更直接的方法来做到这一点?理想情况下,我想做一个 foreach循环可以遍历列表并设置处理程序。

没有人可以帮我解决这个问题吗?

最佳答案

这不是很难。首先,您需要某种方式将菜单项与列表中的控件相关联。

1) 因为你有一个列表,索引是最简单的方法(你可以使用 Dictionary<> 来简化这个关联)。因此,假设当您单击第一个菜单项时,您希望显示 myObjecList[0]。当您单击第二个 MenuItem 时,myObjectList[1] 将出现,依此类推。为此,转到每个菜单项,并在“属性”中为 Tag 属性分配一个值。对于第一个菜单项,将 Tag 分配给 0,对于第二个菜单项,将 Tag 分配给 1 - 依此类推。

2) 创建一个事件处理程序并将相同的处理程序分配给所有菜单项。事件处理程序可能看起来像这样:

private void myToolStripMenuItem_Click(object sender, EventArgs e)
{
// source menu item which was clicked
ToolStripMenuItem item = sender as ToolStripMenuItem;

if(item != null)
{
int index = int.Parse(item.Tag.ToString()); // get the index from Tag
myObject control = myObjectList[index];

// do your stuff with your control

}
}

关于c# - 为多个对象使用事件处理程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16720618/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com