3

我想問我該怎麼做才能打開winform c#中的幫助或類名的窗體?用winform appliaction中的窗體名稱打開表單

我有三個不同的形式

  • UserManagement
  • GroupsManagement
  • LocationManagement

我得到許可從數據庫中這三種形式

在菜單中單擊我填寫標籤屬性與這樣的形式的名稱

tsmMain.Tag = item.PermissionName 
tsmMain.Click += new EventHandler(tsmMain_Click); 

我想要做的是在按鈕點擊動態打開表單並刪除這些條件? 我可以用反射或其他方式嗎?

ToolStripMenuItem aa = sender as ToolStripMenuItem; 
     var tag = aa.Tag; 
     if (tag == "User Management") 
     { 
      UserManagement oUserForm = new UserManagement(); 
      oUserForm.Show(); 
     } 
     if (tag == "Groups Management") 
     { 
      GroupManagement oGroupForm = new GroupManagement(); 
      oGroupForm.Show(); 
     } 
+1

有沒有什麼辦法來匹配'PermissionName'實際'Form',像一個名爲'FormName'的屬性 – 2013-03-01 10:09:47

回答

6

您可能能夠做這樣的事情,使用形式的名稱,作爲一個字符串參數:

var form = (Form)Activator.CreateInstance(Type.GetType("YourNameSpace.UserManagement")); 
form.Show(); 
5

一個簡單的,但不一定是很乾淨的解決辦法是在那裏儲存的形式在你的菜單項的Tag財產,而不是字符串。

在某處你的應用程序的開始,你就必須分配這些實例:

myUserManagementItem.Tag = new UserManagement(); 
myGroupsManagementItem.Tag = new GroupManagement(); 

然後,在點擊事件,你可以縮短你的代碼:

ToolStripMenuItem aa = sender as ToolStripMenuItem; 
Form form = aa.Tag as Form; 
form.Show(); 

清潔解決方案將包括以下內容:

  • 爲不同的菜單項提供單獨的事件處理程序。
  • 推導出您自己的菜單項類型,該類型存儲要在強類型屬性中顯示的表單。