2011-06-14 14 views
0

嘿,我至少對我有任何幫助,我需要找到一種用字符串打開表單的方法。我有這個...如何用一個字符串關閉表格

Dim asm = System.Reflection.Assembly.GetExecutingAssembly 
    Dim myTypes As Type() = asm.GetTypes() 
    Dim frm As Form 
    For Each t As Type In myTypes 
     If t.IsSubclassOf(GetType(System.Windows.Forms.Form)) AndAlso Me.Label4.Text = t.Name Then 
      frm = CType(Activator.CreateInstance(t), Form) 
      frm.Close()     
      frm.Hide() 
     End If 
    Next 

但它不關閉程序甚至隱藏它我不知道?

問題:「我需要找到一個字符串打開窗體的一種方式」

在此先感謝。

+0

你想做什麼,爲什麼你使用反射 – rerun 2011-06-14 08:01:35

+0

那麼我得到了谷歌,這是我能找到的最好的? – Ryan 2011-06-14 08:05:26

+1

我明白你想要做什麼,我明白爲什麼它不起作用。您在窗體類型的實例上調用frm.Close(),而不是在實際打開的窗體上調用。您嘗試關閉的表單是否與上述代碼在同一個應用程序中運行? – Smudge202 2011-06-14 08:12:57

回答

1

對我來說,就像你創建了一個新類型的實例並試圖關閉/隱藏它,但我沒有看到它被顯示出來。

如果您嘗試關閉現有表單,那麼您不想使用Activator.CreateInstance創建新實例。相反,您需要以某種方式找到已打開的表單的現有實例,並關閉該特定實例。

0

您發佈的代碼近似於通過類型名稱創建表單的新實例,然後關閉/隱藏表單的代碼。

(如果你想關閉的名字一個已經開放的形式,我會做:

For Each f As Form In My.Application.OpenForms 
    If f Is My.Forms.NameOfFormThatIWantToClose Then f.Close() 
Exit For 

但是我想你想開放一種新形式的名字。如果是這樣,你將需要使用反射。 This page似乎正是你想要的。

+0

娜我只是想要任何代碼,將關閉一個字符串打開窗體,我不知道字符串。說我10形式,當我點擊一個它會在我的主窗體上設置一個字符串,然後按另一個關閉它將關閉我以前點擊過的一個。 – Ryan 2011-06-15 05:13:24

相關問題