2010-05-04 98 views
0

Camarades,按字符串創建窗口的新實例類型

我有一個WindowForm應用程序,它包含多個窗體,每個窗體都有一個特定的名稱。那麼,我想開發一個類,管理這些窗口的創建,其中,通過參數類型的屏幕(她的名字),系統爲我創建一個...

我在想「 AcessibleName「在MenuItem中,輸入我想要的類的名稱。然後點擊每個項目,該系統執行以下驗證

private void mnMenu_ItemClicked(object sender, ToolStripItemClickedEventArgs e) 
    { 
     try 
     { 
      if (!String.IsNullOrEmpty(((MenuStrip)sender).AccessibleName)) 
      { 
       string[] _Parametros = ((MenuStrip)sender).AccessibleName.Split(uConstantes.CtSeparadorMenu); 
       uMenu.CreateWindow(((MenuStrip)sender).AccessibleName, _Parametros); 
      } 
     } 
     catch (uException __Excp) 
     { 
      throw __Excp; 
     } 
    } 

uMenu.CreateWindow和在類中,我將接收參數和實例化一個新對象,並顯示它。有人有什麼主意嗎?反思解決了這個問題? (不幸的是,我不知道很多關於反射)

感謝

回答

2

我會看着Activator.CreateInstance方法做專你問什麼。

但是,我傾向於問是否有必要(根據您提供的信息)。假設您有一個包含3個項目的菜單。當用戶單擊MenuItem1時,它們將呈現Form1。同樣,MenuItem2-> Form2和MenuItem3-> Form3。你爲什麼不直接發佈表單?這爲您提供了什麼好處?

+0

Camarade, 這條規則不適用於每個人,根據我的編程規則,通常會列出具體的名稱,並且在這些情況下會有所不同。回答你的問題? 我會盡力實施這個解決方案。 謝謝 – 2010-05-04 14:58:11

+0

@ Ph.E:我想我的問題更符合實際情況,單擊MenuItem1時總是需要顯示Form1?如果是這樣,爲什麼不直接在MenuItem1的Click處理程序中說'new Form1()'? – 2010-05-04 15:15:48

+0

@Jacob G:爲什麼會有一些設置,它們將以數組的形式傳遞。如果我使用OnClick事件將非常污染代碼,使其非常分段。 – 2010-05-04 15:47:14

0

其實我錯了。我需要把窗口的名稱,包括它的完整路徑(命名空間)。然後,該命令將起作用,並且該類型將被識別。

謝謝大家。

相關問題