Дочернее окно WPF - сессия удаленного рабочего стола - PullRequest
1 голос
/ 03 января 2011

У нас есть приложение WPF, которое имеет главное окно и 1 дочернее окно, показанное ShowDialog с ShowInTaskBar, установленным в false.

Мы сохраняем их позиции при закрытии и устанавливаем Window.Left и Top при повторном открытии.

Проблема в том, что когда вы подключаете удаленный рабочий стол к компьютеру с несколькими мониторами, а затем открываете дочернее окно с сохраненной позицией за кадром, нет возможности перенести его на один монитор.

Есть ли что-то, что мы можем изменить в дочернем окне, чтобы окна обрабатывали эту проблему? Главное окно не имеет этой проблемы (я думал, что это может быть связано с ShowInTaskBar или фактом, что это главное окно).

Есть ли лучший способ сохранить расположение окна?

Ответы [ 2 ]

2 голосов
/ 03 января 2011

В WPF нет способа по умолчанию для доступа к любому доступному экрану, кроме основного экрана.

WPF имеет SystemParameters.PrimaryScreenHeight и SystemParameters.PrimaryScreenWidth для работы с основным экраном, однако для получения информации на экранах, исключая основной, вам придется использовать System.Windows.Forms.Screen class.

Если вы пошли по маршруту класса System.Windows.Forms.Screen, вы можете сохранить соответствующие данные об окне на основе экрана, на котором оно находится. После считывания значений вы можете принудительно заставить окно перейти к нужному экрану на основе количества экранов, находящихся в массиве System.Windows.Forms.Screen.AllScreens . Это дает вам гибкость при размещении, поскольку вы можете использовать все доступные экраны в системе, а не только основной.

EDIT:

Если вас не интересует получение экранной информации модульным способом (информация на экран в сравнении с совокупностью всех доступных экранов) и вы не хотите использовать класс System.Windows.Forms.Screen, который вы можете использовать свойств SystemParameters.VirtualScreen *, которые обеспечат совокупность доступных экранов.

0 голосов
/ 03 января 2011

Всегда должно быть возможно вернуть любое окно на экран.Следующие шаги привязывают текущее активное окно к курсору мыши:

  • Нажмите Alt + Пробел, чтобы открыть системное меню
  • Нажмите M для «Переместить»
  • Нажмитестрелка вправо
  • теперь перемещает мышь
...