我如何使用c#在屏幕上居中显示一个窗口?

我需要一种方法来居中当前的窗口。 例如,如果用户按下button,我希望窗口在屏幕上居中。 我知道你可以使用startposition属性,但我不能找出一种方式来使用,而不是应用程序第一次启动时。 那么我怎么把表格放在屏幕上呢?

使用Form.CenterToScreen()方法。

1.使用属性窗口

select窗体 – >进入属性窗口 – >select“开始位置” – >select你想要的地方。

“

2.编程

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

注意:不要直接从代码中调用Form.CenterToScreen()。 在这里阅读

单行:

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

在赢的forms:

this.StartPosition = FormStartPosition.CenterScreen;

在WPF中:

this.WindowStartupLocation = WindowStartupLocation.CenterScreen;

这就是你所要做的。

如果您想在运行时使用下面的代码来将您的窗口居中,请将其复制到您的应用程序中:

 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)}; } 

最后调用上面的方法来使其工作:

 ReallyCenterToScreen(); 

在运行时居中表单

1.设置表格的以下属性:
– > StartPosition:CenterScreen
– > WindowState:正常

这将在运行时将表格居中,但如果表格大小比预期更大,请执行第二步。

2.在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; } } } 

居中任何窗口,你可以得到的处理

使用表单的Location属性。 将其设置为所需的左上angular点

所需的x =(desktop_width – form_witdh)/ 2

所需的y =(desktop_height_from_height)/ 2

您可以使用Screen.PrimaryScreen.Bounds检索主监视器的大小(或检查Screen对象以检索所有监视器)。 将这些与MyForms.Bounds一起使用,找出放置表单的位置。

我有点晚了 但感觉就像分享代码一样。

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