2010-10-19 1 views
8

Возможно ли использовать механизм компоновки WinForms для настройки формы таким образом, чтобы высота была полностью отрегулирована, чтобы соответствовать контенту, но ширина будет регулироваться пользователем?WinForms автоматически настраивается вертикально, оставляя ширину регулируемой?

В качестве примера, рассмотрим следующий несколько ухитренных вид:

  • TLP: TableLayoutPanel, с 1 строки и 2 столбца.
  • label1: Label, содержащийся в левой колонке. Установите Text что-то длинное, AutoSize в false, Dock Заполнить.
  • button1: Кнопка, содержащаяся в правой колонке. Установите AutoSize в true.
  • Теперь установите строку в «AutoSize», первый столбец «100%» и второй столбец «AutoSize».
  • Наконец, установите целое TLP на AutoSize true, AutoSizeMode to GrowAndShrink.

На данный момент TLP может быть изменен по горизонтали, но WinForms, похоже, не допускает этого.

Идея состоит в том, что форма, содержащая этот TLP, будет расти или уменьшаться вертикально на основе ширины, которую пользователь может изменить, изменив размер окна как обычно.

ответ

6

Надеюсь, у вас есть решение к настоящему времени. Но в случае, если кто-либо имеет один и тот же запрос, вы можете установить ширину свойства максимального размера в фактическую ширину формы и высоту максимального размера до 0.

1

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

Смежные вопросы