2013-06-24 124 views
0

请帮我解决这个问题。我有一个带按钮的动态菜单。每个按钮都有形式的名称(VP,VZPAL,PAL,...)。当我点击某个按钮时,我想用与按钮相同的名称激活表单。我试着用这段代码去做,但是它的转义除外:动态显示表格

Value can not null。

string Formname = "FISpanel.Form" + b.Name.ToUpper().ToString(); 
Form frm = (Form)Activator.CreateInstance(Type.GetType(Formname)); 
frm.Show(); 

表格名称的价值是right(FISpanel.FormVP)。任何想法?

+0

为什么使用类型名称而不是类型本身? –

+0

是来自您在此处的代码或来自表单本身的异常?这似乎不是这个代码应该抛出的异常。把它放在'try-catch'并调试它。 – DonBoitnott

+0

我会创建一个表单列表并使用按钮文本的名称 – Paparazzi

回答

2

这就是我过去取得同样成就的原因。在我的应用程序中,我有'链接',这些链接设置在.ini文件中,但这些对每个用户可能不同,所以(像你一样),我需要一个解决方案,根据点击的内容启动表单:

 LinkLabel lnk = (LinkLabel)sender; 

     Type type = Type.GetType("Valhalla." + lnk.Tag.ToString()); 
     Form thisFrm = (Form)Activator.CreateInstance(type); 

     // DISPLAY THE FORM // 
     thisFrm.ShowDialog(); 

此外,正如@ King King所提到的。这个点非常重要。你的表格是否实际命名为:“FormVP”或者只是“VP”(等等......)如果晚些时候你必须将它们称为:Form.VP而不是FormVP。