Центрирование элементов управления в форме в .NET(Winforms)?
Я пытаюсь сосредоточить фиксированный размер в форме.
Из интереса, есть ли идиотский способ сделать это? То, что я действительно хочу, похоже на свойство text-align css.
В настоящий момент я устанавливаю свойство заполнения для окружающей формы в подходящий размер и устанавливаю свойство Dock элемента управления для заполнения.
Ответы
Ответ 1
Вы можете достичь этого с помощью привязок. Или, точнее, не использовать их.
Элементы управления привязаны по умолчанию к левому верхнему углу формы, что означает, что при изменении размера формы их расстояние от верхней левой части формы останется неизменным. Если вы измените привязку управления в левом нижнем углу, тогда элемент управления будет оставаться на том же расстоянии от нижней и левой сторон формы, если форма будет изменена.
Отключение якоря в направлении будет держать центр управления в этом направлении при изменении размера.
ПРИМЕЧАНИЕ. Отключение привязки через окно свойств в VS2015 может потребовать ввода None, None (вместо Default Top, Left)
Ответ 2
myControl.Left = (this.ClientSize.Width - myControl.Width) / 2 ;
myControl.Top = (this.ClientSize.Height - myControl.Height) / 2;
Ответ 3
Поскольку вы не указываете, может ли форма изменить размер или нет, есть простой способ, если вам не нужно изменять размер (если вам все равно, идите с решением Mitch Wheats):
Выберите элемент управления → Формат (пункт меню) → Центр в окне → Горизонтально или вертикально
Ответ 4
Я нашел отличный способ сделать это, и он будет работать с несколькими элементами управления. Добавьте таблицуLayout с тремя столбцами. Сделайте центральную колонку абсолютным размером (сколько вам нужно места). Установите два внешних столбца на 100%. Добавьте панель в центральную колонку и добавьте необходимые элементы управления и поместите их туда, где хотите. Эта центральная панель теперь останется в центре вашей формы.
Ответ 5
Для центрирования кнопки на панели o в другом контейнере выполните следующие действия:
- Во время разработки установите позицию
- Перейдите в свойства " Якорь кнопки" и установите это значение как на следующем изображении.
![enter image description here]()
Ответ 6
Вы можете поместить элемент управления, который хотите центрировать внутри панели, и установить значения левого и правого заполнения для чего-то большего, чем значение по умолчанию. Пока они равны, и ваш контроль привязан к сторонам панели, он будет отображаться в центре этой панели. Затем вы можете привязать панель контейнера к ее родительскому элементу по мере необходимости.
Ответ 7
Он включает в себя глазное яблоко (ну, я полагаю, вы могли бы вытащить калькулятор и вычислить), но просто вставьте указанный элемент управления в форму и затем удалите любое анкерование (anchor = None).
Ответ 8
Вы можете поместить все свои элементы управления на панель, а затем написать код, чтобы переместить панель в центр формы.
panelMain.Location =
new Point(ClientSize.Width / 2 - panelMain.Size.Width / 2,
ClientSize.Height / 2 - panelMain.Size.Height / 2);
panelMain.Anchor = AnchorStyles.None;
Ответ 9
Кроме того, если вы хотите выровнять его по центру другого элемента управления:
//The "ctrlParent" is the one on which you want to align "ctrlToCenter".
//"ctrlParent" can be your "form name" or any other control such as "grid name" and etc.
ctrlToCenter.Parent = ctrlParent;
ctrlToCenter.Left = (ctrlToCenter.Parent.Width - ctrlToCenter.Width) / 2;
ctrlToCenter.Top = (ctrlToCenter.Parent.Height - ctrlToCenter.Height) / 2;
Ответ 10
Выше слева и верхнее свойство, если родительское окно максимизировано.