Дочерняя форма mdi не будет центрироваться с другой дочерней формой mdi в том же роднике?

Привет, у меня есть дочерняя форма mdi (форма A), которая при нажатии отображает другую дочернюю форму mdi (форма B), обе из которых имеют одну и ту же родительскую форму. Проблема в том, что я не могу найти способ центрировать дочернюю форму B по дочерней форме A? Это вообще разрешено в vb.net? Однако я могу отобразить форму B (как дочерний элемент без mdi) с центром в форме A (как дочерняя форма mdi), что странно. Хотя это может сработать, эта проблема заключается в том, что по крайней мере граница форм в Windows 8 визуально полностью отличается от формы MDI в Windows 8, что делает все это без униформы и беспорядочным?


person LabRat    schedule 13.06.2019    source источник
comment
Как вы отображаете ребенка без MDI из центра?   -  person Chetan Ranpariya    schedule 13.06.2019
comment
просто поместив его под кнопку, найденную в дочерней форме A, со следующим кодом: FormB.Show (), затем в форме B в событии загрузки, я центрирую формы с помощью Dim x As Integer = ((FormA.Width / 2) - ( Me.Width / 2)) Dim y As Integer = ((FormA.Height / 2) - (Me.Height / 2)) Me.Location = New Point (x, y)   -  person LabRat    schedule 13.06.2019
comment
Имейте в виду, что это не проблема. Проблема в том, что если я покажу форму B как mdi и покажу форму A как mdi, форма B не будет центрироваться с формой A, даже если они используют одну и ту же форму Parrent.   -  person LabRat    schedule 13.06.2019


Ответы (1)


Вот один из способов добиться этого:

Public Class MdiChildA

    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        Dim childB As New MdiChildB
        childB.MdiParent = Me.MdiParent
        AddHandler childB.Load, AddressOf child_Load
        childB.Show()
    End Sub

    Private Sub child_Load(sender As Object, e As EventArgs)
        Dim otherChild As Form = DirectCast(sender, Form)
        otherChild.StartPosition = FormStartPosition.Manual
        otherChild.Location = New Point((Me.Location.X + Me.Size.Width / 2) - otherChild.Size.Width / 2,
                                        (Me.Location.Y + Me.Size.Height / 2) - otherChild.Size.Height / 2)
    End Sub

End Class
person Idle_Mind    schedule 13.06.2019