Vb.net использует общедоступную подпрограмму для открытия экземпляра дочернего MDI

Я пытаюсь уменьшить строку кода, создав вызов Public Sub в одной строке. Однако form.MdiParent = Me выдает ошибку

frmParatemers — это дочерняя форма Mdi. frmMain — это родительская форма MDI.

Из формыГлавная форма

Dim MyCtrl As MenuClickOperations    
MyCtrl.showChildDialog(New frmParameters)

Это мой класс MenuClickOperations

Public Sub showChildDialog(ByVal form As Form)
    Dim form2 As Form
    For Each form2 In frmMain.MdiChildren
        form2.Close()
    Next
    form.StartPosition = FormStartPosition.CenterScreen
    form.MinimizeBox = False
    form.MaximizeBox = False
    form.MdiParent = Me
    form.Show()
End Sub

Помогите мне .. Спасибо


person Jane Smith    schedule 24.09.2015    source источник
comment
MdiParent дочерней формы должна быть формой. Если этот код не находится внутри формы, то Me не относится к форме и, следовательно, не является допустимым значением для MdiParent.   -  person jmcilhinney    schedule 24.09.2015
comment
Как я могу решить, сэр?   -  person Jane Smith    schedule 24.09.2015
comment
Вы можете решить эту проблему, назначив родительскую форму свойству MdiParent дочерней формы.   -  person jmcilhinney    schedule 24.09.2015


Ответы (2)


Вы должны заменить form.MdiParent = Me на form.MdiParent = formInstance. Вы можете использовать frmMain или экземпляр frmMain (если отличается). Если showChildDialog вызывается из frmMain, вы можете передать экземпляр frmMain в качестве параметра, используя Me в вызове.

person xpda    schedule 24.09.2015
comment
Спасибо, понял передачу параметра в Me Control - person Jane Smith; 24.09.2015

in frmГлавная

Dim MyCtrl As MenuClickOperations    
MyCtrl.showChildDialog(New frmParameters, Me)

Это мой класс MenuClickOperations

Public Sub showChildDialog(ByVal form As Form, ByVal Itself As Control)
Dim form2 As Form
For Each form2 In frmMain.MdiChildren
    form2.Close()
Next
form.StartPosition = FormStartPosition.CenterScreen
form.MinimizeBox = False
form.MaximizeBox = False
form.MdiParent = Itself
form.Show()
End Sub
person Jane Smith    schedule 24.09.2015