Что-то вроде RestoreBounds для WindowState - PullRequest
0 голосов
/ 22 июля 2010

У меня есть приложение, которое запускается свернутым.

Я могу установить RestoreBounds, чтобы указать, какой размер будет восстанавливать окно, когда пользователь восстанавливает его.

Но как мне установить, должна ли форма восстанавливаться до максимального или нормального состояния?Нормальный по умолчанию.Я хотел бы что-то вроде RestoreWindowState.

Можно ли как-нибудь сделать это с помощью API?

Ответы [ 2 ]

0 голосов
/ 03 мая 2019

Исходя из моего опыта, Window.RestoreBounds всегда даст вам окончательные "нормальные" размеры вашего окна, а Window.WindowState всегда даст вам окончательное состояние окна (max, min, normal). Независимо от того, в каком состоянии вы находитесь, вы всегда можете просто сохранить значения RestoreBounds и WindowState и вручную установить размеры / состояние окна.

Вот как я это сделал (и я знаю, что восстановление не чистое, но мне все равно):

private class WindowStatus
{
    private WindowState state;
    private Rect restoreBounds;

    public WindowStatus(Window window)
    {
        state = window.WindowState;
        restoreBounds = window.RestoreBounds;
    }

    public void Restore(Window window)
    {
        window.WindowState = state;
        window.Height = restoreBounds.Height;
        window.Width = restoreBounds.Width;
        window.Left = restoreBounds.Left;
        window.Top = restoreBounds.Top;                      
    }

}
0 голосов
/ 22 июля 2010

Разве вы не можете просто добавить это свойство и управлять им?

Добавить свойство в форму.
Переопределить OnClientSizeChanged и проверить, не изменилось ли состояние окна с Минимизированного.поэтому установите WindowState на значение вашего свойства.
Установите флаг, чтобы вы проходили логику только один раз.

...