使用handler打开表单

时间:2014-02-09 02:06:17

标签: c# winforms

对于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是静态方法时,无法做到这两种情况。

抱歉我的英文。

1 个答案:

答案 0 :(得分:0)

您需要创建UserForm的实例(使用Visual Basic,您可以访问表单的默认实例,这是因为VB6兼容性原因)。

UserForm usf = new UserForm();

然后像

一样添加它
mg.AddItem("Users", usf.ShowList);