¿Controles de centrado dentro de un formulario en .NET (Winforms)?

Estoy tratando de centrar un control de tamaño fijo dentro de un formulario.

Por interés, ¿hay una forma no idiota de hacer esto? Lo que realmente quiero es algo análogo a la propiedad text-align css.

Por el momento, estoy configurando la propiedad de relleno del formulario circundante a un tamaño adecuado y configurando la propiedad Dock del control para que se complete.

Puede lograr esto con el uso de anclajes . O más precisamente, el no uso de ellos .

Los controles están anclados por defecto a la parte superior izquierda del formulario, lo que significa que cuando se cambiará el tamaño del formulario, su distancia desde el lado superior izquierdo del formulario permanecerá constante. Si cambia el anclaje de control a la esquina inferior izquierda, el control mantendrá la misma distancia desde el lado inferior y el lado izquierdo del formulario cuando cambie el tamaño del formulario.

Al girar el anclaje en una dirección mantendrá el control centrado en esa dirección al cambiar el tamaño.

NOTA: Desactivar el anclaje mediante la ventana de propiedades en VS2015 puede requerir el ingreso de Ninguno, Ninguno (en lugar del valor predeterminado Arriba, Izquierda)

myControl.Left = (this.ClientSize.Width - myControl.Width) / 2 ; myControl.Top = (this.ClientSize.Height - myControl.Height) / 2; 

Como no dice si el formulario puede cambiar de tamaño o no, hay una manera fácil si no le importa cambiar el tamaño (si le importa, vaya a la solución Mitch Wheats):

Seleccione el control -> Formato (opción de menú) -> Centro en ventana -> Horizontal o verticalmente

Encontré una excelente manera de hacer esto y funcionará con múltiples controles. Agregue un TableLayout con 3 columnas. Haga que la columna central tenga un tamaño absoluto (sin importar cuánto espacio necesite). Establezca las dos columnas exteriores al 100%. Agregue un Panel a la columna central y agregue los controles que necesite y colóquelos donde desee. Ese panel central ahora permanecerá centrado en su forma.

Puede poner el control que desea centrar dentro de un Panel y establecer los valores de relleno izquierdo y derecho en algo más grande que el predeterminado. Siempre que sean iguales y su control esté anclado a los lados del Panel, aparecerá centrado en ese Panel. Luego puede anclar el Panel contenedor a su principal según sea necesario.

Para centrar el Botón en el panel o en otro contenedor, siga este paso:

  1. En el momento del diseño, establezca la posición
  2. Ir al anclaje de propiedades del botón y establecer este valor como la imagen de seguimiento

enter image description here

Implica observarlo (bueno, supongo que podría sacar una calculadora y calcular), pero simplemente inserte dicho control en el formulario y luego elimine cualquier anclaje (ancla = Ninguno).

puede poner todos sus controles en el panel y luego escribir un código para mover su panel al centro de su formulario.

 panelMain.Location = new Point(ClientSize.Width / 2 - panelMain.Size.Width / 2, ClientSize.Height / 2 - panelMain.Size.Height / 2); panelMain.Anchor = AnchorStyles.None; 

Además, si desea alinearlo al centro de otro control:

 //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;