kkdxghlctlcxxtidyuum Ответов: 1

Изменение размера формы во время выполнения?


Привет,

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

If Me.Size = New System.Drawing.Size(478, 274) Then ' This is the initial form size.
    Me.Size = New System.Drawing.Size(478, 458) ' Form size after pressing button.
Else
    Me.Size = New System.Drawing.Size(478, 274) ' Initial form size.
End If


Это небрежно по очень многим причинам - он полагается на то, что форма на самом деле 478, 458 - размер форм будет меняться в зависимости от темы, которую использует пользователь (как я наклонился сегодня).
Я не могу просто поставить "Я.размер = новая система.Рисование.Размер(478, 458), чтобы увеличить высоту формы либо, так как есть компоненты в нижней части моей формы, которые будут вырезаны (из-за различных размеров формы в зависимости от темы).

Что же мне делать?
Большое спасибо за вашу помощь, я уже некоторое время борюсь с этим.

Что я уже пробовал:

Я узнал об операторе "< gt;" - Однако мне не удалось применить его в этом контексте.

Ralf Meier

Что ты хочешь знать ?
Я полагаю, что изменение размера - это не ваш настоящий вопрос - вы хотите знать, как обращаться с элементами управления, которые будут "вне формы" после изменения размера до "маленького", верно ?
Какое поведение вы хотите иметь ?

1 Ответов

Рейтинг:
1

Dave Kreskowiak

Вау.

1) Не используйте размер, чтобы найти размер формы. Используйте свойства Width и Height.

2) Не создавайте новый размер только для того, чтобы выбросить его после сравнения.

3) Вы вообще не меняете ширину, только высоту, поэтому не устанавливайте ее снова с новым размером.

4) Вам не нужно "я" во всем. Код находится в классе form, так что Me уже подразумевается вместе со всем этим. Просто получите/установите свойства и вызовите методы, не нарушая ваши клавиши M и E на клавиатуре.

5) Надеюсь, этот код вызывается только при нажатии кнопки?!

Упростить этот в:

If Height = 274 Then
    Height = 458
Else
    Height = 274
End If


Ralf Meier

@Дейв:
Для меня нет никакой разницы в использовании размера или ширины и/или высоты отдельно.
Если вы используете один или другой, это вызывает изменение размера ...
Но причина : ваш фрагмент кода намного меньше и лучше читается, чем код из OP ...

Dave Kreskowiak

- Вы правы. Нет никакой разницы. Это просто делает код дешевле и проще в написании и поддержке.

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

Честно говоря, я бы не стал писать функциональность, которую он описывает, как это, но это просто и работает для новичка.