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" или (что-то подобное).

Другие вопросы по тегам