2013-06-24 59 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。