对于C#我是超级菜鸟所以请耐心等待。
我正在运行时创建一个菜单。它可以从一个选项到N个选项,并且每个选项都有一个回调函数(显示一个表单或调用其他例程)。我在VB中有这个应用程序,但我正在使用C#( - 学习新东西)再次使用它。在那里我使用MethodInvoker和AddressOf。
步骤:
添加新菜单项
mg.AddItem("Users", UserForm.ShowList);
然后,添加其回调
...
newMenuOption.Click += option_click;
menu.Items.Add(newMenuOption);
在option_click方法中,我调用它存储的项目回调。
Invoke((Item)sender).Tag).m_MenuCallback);
我已经完成了它。
如果UserForm.ShowList不是静态的,则首先mg.AddItem会出错。 (如果是这样,它可以工作,但除了显示MessageBox等之外我什么也做不了。)
我尝试过MethodInvoker,EventArgs,object ...
我的场景是在运行时使用Tiles(菜单项)填充Panorama(telerik控件)(它们根据用户登录而更改)。因此,每个Tile都会打开一个新表单或执行不同的任务。我得到了这个(不是确切的例子)在VB上工作,但C#让我很难过。
PS:
UserForm.ShowList将使用用户填充网格并显示表单。当ShowList是静态方法时,无法做到这两种情况。
抱歉我的英文。
答案 0 :(得分:0)
您需要创建UserForm的实例(使用Visual Basic,您可以访问表单的默认实例,这是因为VB6兼容性原因)。
UserForm usf = new UserForm();
然后像
一样添加它mg.AddItem("Users", usf.ShowList);