C# 使用处理程序打开表单

C# 使用处理程序打开表单,c#,winforms,C#,Winforms,说到C#,我是个十足的傻瓜,所以请容忍我 我正在运行时创建菜单。它可以从一个选项到N个选项,每个选项都有一个回调函数(显示一个窗体或调用其他例程)。我在VB中有这个应用程序,但我正在用C(学习新东西)再次使用它。在这里,我使用MethodInvoker和AddressOf 步骤: 添加一个新的菜单项 mg.AddItem("Users", UserForm.ShowList); 然后,添加其回调 ... newMenuOption.Click += option_click; menu.I

说到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不是静态的,则First mg.AddItem会给出错误。(如果是这样,它可以工作,但除了显示MessageBox之类的东西,我什么也做不了)

我尝试过MethodInvoker、EventArgs和object

我的场景是在运行时用瓷砖(菜单项)填充全景(telerik控件)(它们根据用户登录而变化)。因此,每个磁贴都会打开一个新表单或执行不同的任务。我在VB上得到了这个(不是确切的例子),但C#给我带来了困难

附言:

UserForm.ShowList将用用户填充网格并显示表单。当ShowList是静态方法时,无法执行这两项操作


对不起,我说的是英语。

您需要创建一个UserForm的实例(使用visual basic,您可以访问该表单的默认实例,出于VB6兼容性的原因,该实例保留在中)

然后像这样添加它

mg.AddItem("Users", usf.ShowList);

我已经编辑了你的标题。请看“”,其中的共识是“不,他们不应该”。谢谢。我感谢你的帮助。
mg.AddItem("Users", usf.ShowList);