Минимизированное положение окна в WPF - PullRequest
1 голос
/ 04 мая 2010

Я пытаюсь сохранить положение настраиваемого диалогового окна в реестре пользователей, чтобы при повторной загрузке того же диалогового окна оно отображалось в том же месте, в котором оно было ранее перемещено или изменено. Я сохраняю окна X, положение Y, положение Ширина и Высота. Все работает нормально, за исключением случаев, когда диалог свернут. Если диалог свернут и пользователь щелкает правой кнопкой мыши на представлении диалогов на панели задач (окна 7), они могут нажать «закрыть это окно». Как ни странно, число -33030 сохраняется в реестре как позиции X и Y, но ширина и высота сохраняются правильно. Любая идея, откуда взялась эта цифра и что делать в этой ситуации thx

Ответы [ 2 ]

6 голосов
/ 04 мая 2010

Вы хотите что-то подобное при сохранении положения окна:

if (this.WindowState == WindowState.Normal)
{
    Properties.Settings.Default.Top = Top;
    Properties.Settings.Default.Left = Left;
    Properties.Settings.Default.Height = Height;
    Properties.Settings.Default.Width = Width;
}
else
{
    Properties.Settings.Default.Top = RestoreBounds.Top;
    Properties.Settings.Default.Left = RestoreBounds.Left;
    Properties.Settings.Default.Height = RestoreBounds.Height;
    Properties.Settings.Default.Width = RestoreBounds.Width;
    // Check for WindowState.Maximized or WindowState.Minimized if you
    // need to do something different for each case (e.g. store if application
    // was Maximized
}

Важным битом является RestoreBounds, который вам нужен, когда окно развернуто или свернуто. Код может быть реорганизован, чтобы сделать его более эффективным, но вы поняли.

3 голосов
/ 04 мая 2010

Я полагаю, вы обновляете позицию окна, когда окно закрыто? Есть несколько решений, если это так.

1) Сохраните положение окна в другом событии, например, когда размер окна изменяется или перемещается. 2) Перед сохранением позиций X и Y проверьте, свернуто ли окно.

Пример:

switch (this.WindowState)
{
    case WindowState.Maximized:
        // don't update the X,Y
        break;
    case WindowState.Minimized:
        // don't update the X,Y
        break;
    case WindowState.Normal:
        // DO update the X,Y
        break;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...