Увеличение элементов управления формой при нажатии кнопки максимизации - PullRequest
0 голосов
/ 25 апреля 2018

Я разработал WinForm в vb.NET с VS2017. Теперь я хотел бы добавить функцию, с помощью которой форма имеет два размера - обычный размер, который она изначально загружает, а также больший размер, который запускается, когда пользователь нажимает кнопку максимизации в форме. Если возможно, я не хочу, чтобы форма изменяла размеры, если пользователь перетаскивает ее стороны и т. Д., Я только хочу, чтобы она работала, если они нажимают кнопку «Развернуть».

Сама форма выглядит так, как показано на рисунке, она состоит из Panel, которая всегда будет привязана к вершине, и TabControl, который будет увеличиваться, если окно развернуто. TabControl состоит из 6 TabPages, на каждой из которых есть групповые блоки и панели, а на каждой групповой панели / панели есть несколько меток и текстовых блоков. Когда он увеличивается, я бы хотел, чтобы размер надписей и текстовых полей увеличивался до того же процента, что и у TabControl, - в основном все в TabControl увеличивается на тот же процент

Form Layout

Возможное решение, о котором я думаю, это захват максимизированного и «нормального размера» состояний формы (нормальный размер, запускаемый во время загрузки и если пользователь нажимает, чтобы максимизировать максимизированную форму), а затем цикл по каждому элементу управления на каждой вкладке страницы и настройку стиля каждого элемента управления в соответствии с желаемым макетом большего размера.

Мне удалось зафиксировать развернутые и развернутые события следующим образом:

Private Sub Form1_Resize(sender As Object, e As EventArgs) Handles Me.Resize

    If Me.WindowState = FormWindowState.Maximized Then

        Console.WriteLine("I have been maximised")

    End If

    If Me.WindowState = FormWindowState.Normal Then
        Console.WriteLine("I have been minimised")
    End If

End Sub

Я попытался установить стиль привязки для каждого элемента управления, кроме TabControl, на «Top, Bottom, Right, Left», а затем в вышеупомянутой подпрограмме, установив TabControl AncorStyle на «Top, Bottom, Right, Left», но я было две проблемы с этим:

1) Следующий код не работал правильно, чтобы установить для AnchorStyle значение «Top, Bottom, Right, Left»

TabControl1.Anchor = AnchorStyles.Top Or AnchorStyles.Bottom Or AnchorStyles.Left Or AnchorStyles.Right

Следующее также не удалось:

TabControl1.Anchor = AnchorStyles.Top And AnchorStyles.Bottom And AnchorStyles.Left And AnchorStyles.Right

2) Когда я вручную устанавливаю для AnchorStyle TabControl значение «Вверху, внизу, влево, вправо» в конструкторе и нажимаю кнопку «Развернуть» при запуске формы, форма расширяется нежелательным образом, когда ящики группы на перекрытие TabPage, текст не меняет свой размер в метках и т. д .:

enter image description here

Любая помощь по этому вопросу будет принята с благодарностью

1 Ответ

0 голосов
/ 25 апреля 2018

TableLayoutPanel.Это то, что вам нужно.Посмотрите на это.Это в основном сетка, подобная установке, где каждая ячейка может иметь только один элемент управления.Вы можете установить размеры для строк и столбцов в процентах или абсолютных значениях, чтобы получить желаемый макет.

Это также будет работать с изменением размера.

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

...