Привязанные элементы управления WinForms не раскрываются правильно

У меня проблема с WinForms (VB.NET).

Главное окно - это контейнер MDI. Пользователь открывает новое дочернее окно:

non maximized child 1

, а затем разворачивает его до максимума, так что окно правильно заполняет клиентскую область. Мои элементы управления должным образом привязаны (с помощью свойства IDE Anchor) к сторонам окна, так что при увеличении окна всегда хорошо заполняется клиентская область:

maximized child 1

В этом состоянии (окна клиента развернуты) пользователь открывает другое или новое дочернее окно, но элементы управления нового окна не растягиваются, то есть они не «понимают», что они должны растягиваться!

non stretched child 2

Это особенно раздражает, потому что, если пользователь пытается восстановить окно, элементы управления растягиваются, поэтому они исчезают ( видеть, что списка больше нет)!

restored child 2

Это ошибка? Как я могу это решить?

править: согласно комментарию Ханса Пассанта, я создал новый простой проект, и он работал так, как должен. Поэтому я исследовал, что отличалось от моего реального проекта и образца. Разница в том, что в моем проекте я создаю формы динамически.

Я динамически создаю множество кнопок на панели инструментов. Когда пользователь нажимает кнопку, выполняется следующий код:

Private Sub buttonClicked(ByVal sender As System.Object, ByVal e As System.EventArgs)
        Cursor.Current = Cursors.WaitCursor

        Dim b As Button = CType(sender, Button)

        Dim assem As Assembly = Assembly.GetExecutingAssembly()
        Dim formType As Type = assem.GetType(CStr(b.Tag))

        Dim exFormAsObj As Object = Nothing
        Try
            exFormAsObj = Activator.CreateInstance(formType)
        Catch ex As Exception
            Cursor.Current = Cursors.Default
            MessageBox.Show("clicca meglio:" + ex.ToString)
            Exit Sub
        End Try

        Dim f As Form = CType(exFormAsObj, Form)
        f.MdiParent = Me
        f.Show()

        Cursor.Current = Cursors.Default
    End Sub

То есть имя формы находится в теге кнопки. Я создаю новый экземпляр формы с помощью Activator.CreateInstance (formType) , затем показываю его: f.Show () .

Я почти уверен, что проблема в в создании этой динамической дочерней формы, но я не могу понять, куда.

edit2: Я создаю новый экземпляр формы с помощью Activator.CreateInstance (formType) , затем показываю его: f.Show () .

Я почти уверен, что проблема в в создании этой динамической дочерней формы, но я не могу понять, куда.

edit2: Я создаю новый экземпляр формы с помощью Activator.CreateInstance (formType) , затем показываю его: f.Show () .

Я почти уверен, что проблема в в создании этой динамической дочерней формы, но я не могу понять, куда.

edit2: Найденный! В моей форме обычное событие Load я делал

myform.SuspendLayout()
' various instructions
myform.ResumeLayout(False)

вместо False, мне следовало написать true: myform.ResumeLayout (True)

Так просто, извините.

8
задан vulkanino 8 February 2011 в 11:16
поделиться