Существует два основных способа автоматического изменения размера элемента управления на основе изменений размера родительского контейнера (форма в вашем случае):
- Установите для свойства элемента управления Dock значение DockStyle.Fill.
- Установите для свойства «Якорь» значение «Вверх, внизу, влево, вправо»
Использование свойства Dock с Dock.Fill
Преимущество этого метода состоит в том, что он берет весь элемент управления и говорит ему всегда заполнять всю клиентскую область родительского контейнера (в вашем случае, клиентскую область формы). Это полезно, если вы хотите сделать что-то вроде заполнения формы с помощью ListControl или TreeView или чего-то подобного. Но это не так полезно, если вы хотите масштабировать один элемент управления при использовании других элементов управления (как вы указали, это ваша потребность). В этом случае вам необходимо установить для свойства Dock в других элементах управления значение DockStyle.Top или DockStyle.Bottom, чтобы они плавали над или под основным элементом управления изменением размера.
Это хлопотно, и это также ограничивает параметры макета других элементов управления. Вы можете решить эту проблему, установив два элемента управления Panel, один сверху и другой снизу формы. Эти панели останутся в фиксированных положениях, в то время как средняя область (с вашим элементом управления DockStyle.Fill) масштабируется с родительской формой. Затем вы можете поместить любые элементы управления в любой конфигурации макета в эти панели «верхний и нижний колонтитулы».
Этот вид составного формостроения с использованием закрепленных панелей невероятно мощный. Откровенно говоря, это было изменение игры в .NET, когда они представили это с .NET 1.0 WinForms.
Используйте свойство Anchor с "Top, Bottom, Left, Right"
Если все, что вы хотите сделать, - это иметь один элемент управления на шкале формы, в то время как другие остаются «прилипшими» к краям, используйте свойство Anchor. Для элементов управления, которые вы хотите оставить наверху, установите для свойства Anchor значение «Top, Left» (по умолчанию). Для элементов управления, которые вы хотите оставить внизу, установите для свойства Anchor значение «Bottom, Left». Для элементов управления, которые вы хотите увеличить по ширине с помощью формы / диалога (например, однострочного элемента управления текстовым полем), установите для свойства Anchor значение «Влево, вправо» (и установите значение «Вверх» или «Вниз» в зависимости от того, хотите ли вы, чтобы оно перемещалось как верх или изменяется нижняя часть диалога.
И если вы хотите, чтобы размер элемента управления изменялся во всех направлениях с помощью формы, установите для свойства Anchor значение «Вверху, слева, снизу, справа». Очень полезно для вещей типа «основной элемент управления», таких как доминирующий список, древовидная структура или многострочный текст.
Для того, что вам нужно, не связывайтесь с AutoSize или AutoSizeMode ... эти свойства управляют тем, как элемент управления изменяет размер в зависимости от его собственного содержимого, а не как его размер изменяется в зависимости от поведения его контейнера. Думайте о режиме AutoSize / AutoSize как о внутреннем взгляде, в то время как Anchor / Dock смотрят наружу. Вы получаете очень странное поведение, если используете оба метода определения размера одновременно. Как правило, не полезно.