我正在使用Visual Studio 2010,C#.NET 4,WinForms。我的电脑有2个显示器。
当我调用表单的CenterToScreen
方法时,表单将自己置于光标所在的任何屏幕上。有谁知道为什么?
答案 0 :(得分:32)
请勿直接从您的代码中调用此方法。相反,设置 StartPosition属性为CenterScreen。
CenterToScreen方法使用以下优先级列表 确定用于居中表格的屏幕:
- 表单的所有者属性。
- 表单的HWND所有者。
- 当前有鼠标光标的屏幕。
醇>
因此,有效地在表格的初始显示期间使用它。它不打算以后再使用。
你可以这样写自己的:
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)
};
}
答案 1 :(得分:3)