#c# #winforms #visual-studio-2010
#c# #winforms #visual-studio-2010
Вопрос:
Я новичок в Windows Forms в Visual Studio, и мне интересно, как автоматически изменять размер элементов управления до размера окна.
Допустим, у меня есть 2 элемента управления на панели, поле списка и кнопка. Я хочу, чтобы кнопка была закреплена внизу, и я хочу, чтобы поле списка занимало все остальное пространство. при изменении размера окна кнопка должна находиться внизу (как и ожидалось при закреплении), а поле списка должно растягиваться до кнопки.
Есть ли способ сделать это без какого-либо кода?
Спасибо.
Ответ №1:
Dock довольно прост в использовании, но я рекомендую вместо этого использовать свойства привязки. Измените размер вашей формы до разумного размера в конструкторе. Затем разместите свои элементы управления так, чтобы они выглядели так, как вы хотите. Затем решите, какие элементы управления должны изменяться вместе с формой, и установите свойство Anchor следующим образом:
- Если вы хотите, чтобы размер элемента управления соответствовал ширине формы, установите правильную привязку.
- Если вы хотите изменить размер по высоте, установите нижнюю привязку.
- Если вы хотите, чтобы элемент управления оставался правым при изменении размера формы, снимите левую привязку.
- Если вы хотите, чтобы элемент управления оставался нижним при изменении размера формы, снимите верхнюю привязку.
Проблема, с которой я сталкиваюсь с Docks, заключается в том, что они иногда ведут себя странно, когда элементы управления не объявлены в определенном порядке, и для получения желаемого эффекта иногда приходится создавать посторонние панели просто для удержания элементов управления.
Ответ №2:
Это действительно становится беспорядочным, когда вы хотите сохранить соотношение сторон каждого элемента управления. Один из способов, который не совсем подходит, если вы хотите разобраться в деталях, — это использовать TableLayoutPanel
и использовать Dock
Anchor
разумно для достижения желаемого.
Ответ №3:
Используйте параметры dock и fill для элементов управления. Посмотрите в разделе свойства для каждого объекта и контейнеров, если они есть в каких-либо.
Комментарии:
1. Я установил для поля списка значение заполнить, а для кнопки — снизу. Поле списка заполняет контейнер, за исключением того, что оно находится под кнопкой.
2. Возможно, вам потребуется прикрепить кнопку к нижней части списка. Попробуйте другие настройки dock, чтобы посмотреть, как это работает, или смотрите здесь: techrepublic.com/article /…
Ответ №4:
Вы можете использовать SplitContainer
Примеры можно найти в Google. Вот один
Ответ №5:
Попробуйте установить для свойства Dock вашего ListBox значение Fill.
Однако вам нужно обратить внимание на одну вещь: по умолчанию ListBox будет иметь размер для отображения целых элементов списка. Если вы измените размер элемента управления так, чтобы он отображал частичный элемент, он сам подстроится так, чтобы отображался полный элемент. Из-за этого может показаться, что элемент управления теряет свое поведение при закреплении. Решение для этого состоит в том, чтобы установить для свойства IntegralHeight ListBox значение false, которое указывает, что элемент управления не изменяет размер самого себя, чтобы соответствовать полным элементам.
Комментарии:
1. Спасибо за совет! К сожалению, поле списка все еще отображается под кнопкой. Я установил для закрепления кнопки значение buttom, но оно по-прежнему отображается поверх списка.
2. @sFuller — ах. Щелкните правой кнопкой мыши список и выберите «Вывести на передний план». И не забудьте установить IntegralHeight = false.