VB.NET видит неправильный монитор как имеющий панель задач для вычисления высоты
Когда я запускаю это VB.NET код в моей программе WinForms он отображает ожидаемые результаты, если монитор №1 находится слева, а монитор № 2-справа. (И монитор №1 содержит панель задач Windows.)
Но если пользователь переключил свои мониторы, с монитором №2 слева (содержащим панель задач) и № 1 справа... высота теперь неправильная. Затем мой код (неверно) предполагает, что монитор с панелью задач имеет большее значение высоты.
Есть ли способ исправить это? (Не заставляя 1000 пользователей переключать свои мониторы... или переключите панели задач на другой монитор.)
Или я совершенно не понимаю "WorkingArea ()"????
Dim msg As String = ""
Dim numberOfMonitors As Int16 = Screen.AllScreens.GetUpperBound(0) + 1
If (numberOfMonitors >= 1) Then msg &= "Monitor #1 = " & Screen.AllScreens(0).WorkingArea.Width & " x " & Screen.AllScreens(0).WorkingArea().Height & ". "
If (numberOfMonitors >= 2) Then msg &= "Monitor #2 = " & Screen.AllScreens(1).WorkingArea.Width & " x " & Screen.AllScreens(1).WorkingArea().Height & ". "
Call MsgBox(msg)
1 ответ:
Нет, вы не недопонимаете рабочую зону. Вот определение из MSDN
Рабочая область-это область рабочего стола дисплея, за исключением панелей задач, закрепленных окон и закрепленных панелей инструментов.WorkingArea вернет всю область экрана, если панель задач Windows настроена на автоматическое скрытие, независимо от того, отображается ли панель задач в данный момент или нет.
Я бы посмотрел на два свойства экрана класса один
Primary
который возвращает логическое значение, указывающее, является ли экран основным или нет, второй просто используетPrimaryScreen
свойство для получения рабочей области основного экрана.предостережение: у меня нет двойной системы мониторинга, включенной в это время, чтобы проверить, работает ли это.