【发布时间】:2021-01-30 15:38:55
【问题描述】:
我有一个像这样动态创建的菜单:
ContextMenu MenuNote = new ContextMenu();
MenuNote.MenuItems.AddRange(new MenuItem[]
{
new MenuItem() { Name = "open", Text = "Ouvrir"},
new MenuItem() { Name = "mute", Text = "Sourdine"},
new MenuItem() { Name = "exit", Text = "Quitter" }
});
我没有创建引用,因为之后我不需要这些对象,除了它们各自的事件。
然后我尝试做这样的事情,但我收到一个我无法识别的错误:
new MenuItem() { Name = "open", Text = "Ouvrir"}.Click += new EventHandler(MenuOpen_Click)
我收到此错误,而我对“将事件添加到未引用对象”的研究对我没有帮助
无法将类型“void”隐式转换为 'System.Windows.Forms.MenuItem'
我真的需要为每个项目创建引用我只是语法错误吗?
谢谢
【问题讨论】:
-
确切地说:您的 MenuItem 对象被引用,因为它们是
MenuNote.MenuItems集合的一部分;你只是没有分配任何变量。您仍然可以使用MenuNote.MenuItems[index]访问它们。 -
@KlausGütter 是的,你是对的,如果我没有使用正确的话,对不起。事实上,由于索引,我设法访问它,但我想知道是否可以在一行中完成它,就像我的例子一样。谢谢你的回复
-
参见例如在这里:stackoverflow.com/questions/3993601/…。这被考虑用于 C#6,但 AFAIK 从未将其纳入语言。但是,可以为
MenuItem编写一个扩展方法,允许类似的语法。
标签: c# object events reference