开发者

how to close a form with a string

Hey guys I have got to a head scratcher well at least for me any way.开发者_高级运维 I need to find a way of opening a form with a string. I have got this ...

    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

But it doesn't close the program or even hide it i have no clue?

Question: "I need to find a way of opening a form with a string"

Thanks in advance.


That looks to me like you created a new form instance of that type and tried to close/hide it, but I don't see it ever being shown.

If you are trying to close an existing form, then you don't want to create a new instance using Activator.CreateInstance. Rather you need to somehow locate the existing instance of the form that is already open, and close that specific instance.


The code you posted approximates code that would create a new instance of a form by type name, then close/hide the form.

(If you wanted to close an already-open form by name, I would do:

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

)

But I thought you wanted to open a new form by name. If so, you will need to use reflection. This page seems to do exactly what you want.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜