Подтвердить что ты не робот

Центрирование элементов управления в форме в .NET(Winforms)?

Я пытаюсь сосредоточить фиксированный размер в форме.

Из интереса, есть ли идиотский способ сделать это? То, что я действительно хочу, похоже на свойство text-align css.

В настоящий момент я устанавливаю свойство заполнения для окружающей формы в подходящий размер и устанавливаю свойство Dock элемента управления для заполнения.

4b9b3361

Ответ 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 в другом контейнере выполните следующие действия:

  1. Во время разработки установите позицию
  2. Перейдите в свойства " Якорь кнопки" и установите это значение как на следующем изображении.

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

Выше слева и верхнее свойство, если родительское окно максимизировано.