С# WinForm Location не принимает новое значениеC#

Место общения программистов C#
Anonymous
С# WinForm Location не принимает новое значение

Сообщение Anonymous »

C# — Windows Forms — .NET Framework 4.8
Я пытаюсь центрировать свою 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;
}
}
Несмотря на то, что значение p является правильной точкой для центра, значение Location не меняется даже после присвоения значения p.
Заранее спасибо.


Подробнее здесь: https://stackoverflow.com/questions/787 ... -new-value

Вернуться в «C#»