visual ventana posicionar posicion pantalla net mover formulario form como centro centrar centralizado cambiar abrir c# winforms screen center

posicionar - ¿Cómo centro una ventana en la pantalla en C#?



posicionar formulario c# (10)

Necesito una forma de centrar la ventana actual. Entonces, por ejemplo, si un usuario presiona un botón, quiero que la ventana se centre en la pantalla. Sé que puedes usar la propiedad de inicio de la posición, pero no puedo encontrar una manera de usarlo más que cuando la aplicación se inicia por primera vez. Entonces, ¿cómo centrar el formulario en la pantalla?


  1. Usando la ventana de Propiedad

    Seleccione formulario → vaya a la ventana de propiedades → seleccione "posición de inicio" → seleccione el lugar que desee.

  2. Programáticamente

    Form form1 = new Form(); form1.StartPosition = FormStartPosition.CenterScreen; form1.ShowDialog();

    Nota: No llame directamente a Form.CenterToScreen () desde su código. Lea here .


En Windows Forms:

this.StartPosition = FormStartPosition.CenterScreen;

En WPF:

this.WindowStartupLocation = WindowStartupLocation.CenterScreen;

Eso es todo lo que tienes que hacer...


Puede usar Screen.PrimaryScreen.Bounds para recuperar el tamaño del monitor principal (o inspeccionar el objeto Screen para recuperar todos los monitores). Use aquellos con MyForms.Bounds para descubrir dónde colocar su formulario.


Si desea centrar sus ventanas durante el tiempo de ejecución, use el siguiente código, cópielo en su aplicación:

protected void ReallyCenterToScreen() { Screen screen = Screen.FromControl(this); Rectangle workingArea = screen.WorkingArea; this.Location = new Point() { X = Math.Max(workingArea.X, workingArea.X + (workingArea.Width - this.Width) / 2), Y = Math.Max(workingArea.Y, workingArea.Y + (workingArea.Height - this.Height) / 2)}; }

Y finalmente llame al método anterior para que funcione:

ReallyCenterToScreen();


Una sola línea

this.Location = new Point((Screen.PrimaryScreen.WorkingArea.Width - this.Width) / 2, (Screen.PrimaryScreen.WorkingArea.Height - this.Height) / 2);



Use la propiedad Ubicación del formulario. Establecerlo en el punto superior izquierdo deseado

deseado x = (desktop_width - form_witdh) / 2

deseado y = (desktop_height - from_height) / 2


Utilizar esta:

this.CenterToScreen(); // This will take care of the current form


Centrar un formulario en tiempo de ejecución

1. Establezca la siguiente propiedad de Formulario:
-> StartPosition: CenterScreen
-> WindowState: Normal

Esto centrará el formulario en tiempo de ejecución, pero si el tamaño del formulario es mayor de lo esperado, realice el segundo paso.

2. Agregue el tamaño personalizado después de InitializeComponent ();

public Form1() { InitializeComponent(); this.Size = new Size(800, 600); }


using System; using System.Drawing; using System.Runtime.InteropServices; using System.Windows.Forms; namespace centrewindow { public partial class Form1 : Form { public struct RECT { public int Left; // x position of upper-left corner public int Top; // y position of upper-left corner public int Right; // x position of lower-right corner public int Bottom; // y position of lower-right corner } [DllImport("user32.dll")] public static extern IntPtr SetWindowPos(IntPtr hWnd, int hWndInsertAfter, int x, int Y, int cx, int cy, int wFlags); [DllImport("user32.dll")] public static extern bool GetWindowRect(HandleRef hwnd, out RECT lpRect); public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { CentreWindow(Handle, GetMonitorDimensions()); } private void CentreWindow(IntPtr handle, Size monitorDimensions) { RECT rect; GetWindowRect(new HandleRef(this, handle), out rect); var x1Pos = monitorDimensions.Width/2 - (rect.Right - rect.Left)/2; var x2Pos = rect.Right - rect.Left; var y1Pos = monitorDimensions.Height/2 - (rect.Bottom - rect.Top)/2; var y2Pos = rect.Bottom - rect.Top; SetWindowPos(handle, 0, x1Pos, y1Pos, x2Pos, y2Pos, 0); } private Size GetMonitorDimensions() { return SystemInformation.PrimaryMonitorSize; } } }

Centra cualquier ventana que pueda obtener el mango de