Я использую Visual Studio 2010, С#.NET 4, WinForms. Мой ПК имеет 2 монитора.
Когда я вызываю метод CenterToScreen
формы, форма сосредотачивается на любом экране, на котором курсор включен. Кто-нибудь знает, почему?
Я использую Visual Studio 2010, С#.NET 4, WinForms. Мой ПК имеет 2 монитора.
Когда я вызываю метод CenterToScreen
формы, форма сосредотачивается на любом экране, на котором курсор включен. Кто-нибудь знает, почему?
В документации :
Не вызывайте это прямо из своего кода. Вместо этого установите Свойство 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)
};
}
Его по дизайну: http://msdn.microsoft.com/en-us/library/system.windows.forms.form.centertoscreen.aspx