2010-12-13 2 views
1

У меня есть вопрос, который не ответил на.Net/Winforms, двойной монитор - Borderless Window - максимизация не работает

http://social.msdn.microsoft.com/Forums/en-US/wpf/thread/fa521007-f317-48f1-9cdd-de2dbcb17aa8

(последние посты мои посты). StackOverflow лучше форум не могли бы вы мне помочь :)

Кратко:

  • двойной конфигурации монитора, основной монитор справа имеет более низкое разрешение, на левой стороне монитора с высоким разрешением (Lo: 1280x1024; привет : 1680x1050). При максимальном увеличении на большом окне окно больше монитора (работает только на левом мониторе)
  • , работающий с базовым классом базового окна
  • Максимальное значение для реальной клиентской области не работает должным образом. Решено, добавив крючок WndProc и играя с параметрами размера. Поддержка нескольких мониторов добавила некоторые проблемы, поскольку максимизация, по-видимому, зависит от MaxTrackSize, а не от MaxSize. Это, кажется, происходит только тогда, когда основной монитор меньше, чем второй монитор

Что-то я нашел в спецификации:

http://msdn.microsoft.com/en-us/library/ms632605(v=VS.85).aspx

Для систем с несколькими мониторами, ptMaxSize и Члены ptMaxPosition описывают максимальный размер и положение окна на основном мониторе , даже если окно в конечном итоге максимизируется на вторичном мониторе . В этом случае диспетчер окна регулирует эти значения до , компенсируя различия между основным монитором и монитором, который отображает окно . Таким образом, если пользователь оставляет ptMaxSize нетронутым, окно на мониторе, большем, чем первичный монитор , максимизируется размером большего размера монитора .

Так что, если я правильно понимаю, в моем случае это невозможно , чтобы максимизировать на экране с высоким разрешением, когда есть панель задачи помещена в пути, чтобы не прятать его под развернутым окном?

Приветствия, ЖБК

ответ

0

Вы можете реализовать свой собственный «максимизировать»:

  1. Определить, какой экран ваша форма находится на с Screen.FromControl
  2. Установить смещение и размер вашего Formaccording к экрана смещения и размер.
  3. Вы можете использовать либо Рабочий стол (область рабочего стола), либо Границы (весь экран с панелями инструментов) экрана по мере необходимости.

* Если вы хотите скрыть панели инструментов и деактировать «полный экран», я думаю, вам нужно будет установить форму как TopMost.

0

Это то, что работает для меня:

  1. Набор FormBorderStyle в FixedSingle - может также работать с другими стилями = Ни, не не проверял, что ...
  2. Set WindowState к FormWindowState.Maximized
  3. Сброс FormBorderS мозоль к None

По крайней мере, он работает на чистом WinForms вещи, не прибегая к WinAPI