Я пытаюсь центрировать свою WinForm каждый раз, когда окно нормализуется, однако оно возвращается только к предыдущему нормализованному местоположению. Установка свойства Location игнорирует новое значение.
Я использую событие изменения размера формы. Я проверяю, есть ли WindowState == FormWindowState.Normal, а затем вычисляю центральную точку на основе рабочей области. Это работает в первый раз, но если в какой-то момент я переведу форму в нормальное состояние, при любых последующих экземплярах формы будет установлено нормальное состояние (после состояния развертывания), свойство Location игнорирует вычисленную точку.
Код: Выделить всё
private void OnFormResize(object sender, EventArgs e)
{
if (this.WindowState == FormWindowState.Normal)
{
this.StartPosition = FormStartPosition.Manual;
Screen screen = Screen.FromControl(this);
Rectangle workingArea = screen.WorkingArea;
Point p = 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)
};
this.Location = p;
}
}
Заранее спасибо.
Подробнее здесь: https://stackoverflow.com/questions/787 ... -new-value