Cómo cambiar automáticamente el tamaño y ajustar los controles de Forma con cambio en la resolución

Me he dado cuenta de que algunas aplicaciones cambian su posición de control para ajustarlas lo más posible en la resolución. Si la ventana se maximiza, se configuran de tal forma que la GUI se ve equilibrada. Mi pregunta es ¿es posible crear o implementar esta funcionalidad en Visual Studio 2010 C #?

Use las propiedades Dock y Anchor . Aquí hay un buen artículo. Tenga en cuenta que estos manejarán los cambios al maximizar / minimizar. Eso es un poco diferente que si cambia la resolución de la pantalla, pero tendrá la misma idea.

Use combinaciones de estos para obtener el resultado deseado:

  1. Establezca la propiedad Anchor en Ninguna, los controles no se redimensionarán, solo cambiarán su posición.

  2. Establezca la propiedad Anchor en Top + Bottom + Left + Right, los controles se cambiarán de tamaño pero no cambiarán su posición.

  3. Establezca el Minimum Size de la forma en un valor adecuado.

  4. Establecer la propiedad Dock .

  5. Utilice el evento Form Resize para cambiar lo que quiera

No sé cómo se verá afectado el tamaño de la fuente (etiqueta, cuadro de texto, combobox, etc.) en (1) – (4), pero se puede controlar en (5).

 float widthRatio = Screen.PrimaryScreen.Bounds.Width / 1280; float heightRatio = Screen.PrimaryScreen.Bounds.Height / 800f; SizeF scale = new SizeF(widthRatio, heightRatio); this.Scale(scale); foreach (Control control in this.Controls) { control.Font = new Font("Verdana", control.Font.SizeInPoints * heightRatio * widthRatio); } 

… y para detectar un cambio en la resolución para manejarlo (una vez que esté utilizando Docking y Anchor como SwDevMan81 sugirió) use el evento SystemEvents.DisplaySettingsChanged en Microsoft.Win32 .

en el evento de carga de formulario, agrega esta línea

 this.WindowState = FormWindowState.Maximized; 

agregue este código en la carga de página para todo control o agregue todo el control en contenedores

 int x; Point pt = new Point(); x = Screen.PrimaryScreen.WorkingArea.Width - 1024; x = x / 2; pt.Y = groupBox1.Location.Y + 50; pt.X = groupBox1.Location.X + x; groupBox1.Location = pt; 
 private void MainForm_Load( object sender, EventArgs e ) { this.Size = Screen.PrimaryScreen.WorkingArea.Size } 
 this.WindowState = FormWindowState.Maximized;