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