Из документации :
Не вызывайте это напрямую из своего кода.Вместо этого установите для свойства StartPosition значение CenterScreen.
Метод CenterToScreen использует следующий список приоритетов для определения экрана, используемого для центрирования формы:
- Свойство Owner формы.
- Владелец 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)
};
}