MDI-дочерний элемент виден только тогда, когда WindowState развернут
Я сделал пользовательскую рамку для моего ребенка. Свойства дочерней формы Mdi:
- FormBorderStyle = Нет
- Controlbox = False
- Текст = ""
- WindowState = развернуто
Во-первых, когда для свойства Windowstate было установлено значение Normal, мой дочерний элемент mdi не появлялся, я думаю, он имел размер 0;0. Я попытался установить размер в методе Form_Load, но все равно ничего не изменилось. Когда я изменил FormBorderStyle на FixedSingle, я увидел очень крошечную форму с достаточным пространством для двойного щелчка по строке заголовка. Тогда форма действительно развернута.
Я просто больше не понимаю, все это очень сбивает с толку. А так как окно windows развернуто, я не могу использовать функции для перетаскивания формы по экрану, потому что она думает, что она развернута....
2 ответа
Попробуйте этот код - гарантированно работает:
Public frmContainer As FormContainer
Public frmChild As FormChild
Public Sub OpenfrmChild()
If Not IsNothing(frmChild) AndAlso frmChild.Visible = False Then 'This applies after form has been closed
frmChild = Nothing '(frmChild does not test as nothing after being closed)
frmChild = New FormChild
frmChild.MdiParent = frmContainer
frmChild.Show()
ElseIf IsNothing(frmChild) Then 'This applies the first time form is opened
Try
frmChild = New FormChild
frmChild.MdiParent = frmContainer
frmChild.Show()
Catch ex As Exception
ErrorMsg(ex.Message() & "Description: " & ex.ToString)
End Try
Else 'This applies if form is visible and user clicks the button on FormChild again
frmChild.BringToFront()
End If
frmChild.WindowState = FormWindowState.Maximized
frmChild.Dock = DockStyle.Fill
End Sub
Вы написали "WindowState = Maximized".
Возможно, из-за этого вы видите свою форму MDI только тогда, когда родительская форма развернута.
Я рекомендую вам написать "WindowState = Normal", а в Form_Load написать "MDIForm.Size=ParentForm.Size" или (что-то подобное).