Как обеспечить создание только одного экземпляра дочерней формы родительской формой mdi в VB.NET

У меня есть кнопка в родительской форме, которая может создавать новые дочерние формы.

Однако я не хочу создавать более одного экземпляра каждой формы. Я попытался поместить общедоступное логическое значение в родительскую форму MDI: Dim ChildForm As Boolean = False

И в момент создания дочерней формы: ChildFormThere = True

И в событии «Выход» дочерней формы я подумал, что смогу сделать это:

Me.MdiParent.ChildFormThere = False

Но не распознает переменную ChildFormThere... Как же тогда это сделать?


person user961627    schedule 23.11.2012    source источник


Ответы (2)


Как насчет чего-то подобного. Идея состоит в том, что если форма уже создана, вы переключаетесь на нее, в противном случае создаете ее. Это предполагает, что вы правильно настраиваете mdiParent при создании дочерних форм. Этот код должен быть запущен в mdiParent или иметь ссылку на него для доступа к свойству MdiChildren.

For Each f In Me.MdiChildren
    If TypeOf (f) Is Form1 Then
        f.Show()
        Exit Sub
    End If
Next

Dim frm As New Form1
frm.Show()
person PatFromCanada    schedule 23.11.2012

Возможно вместо:

dim ChildFormThere as Boolean = False ' Or True

Вы можете сделать:

dim ChildForm as New ChildFormClass

' On Create Button Click:
ChildForm.Visible = True

Таким образом, это всегда один и тот же экземпляр, поэтому вам просто нужно управлять, виден он или нет.

person Origin    schedule 23.11.2012