Как вы можете запрограммировать приложение dotNet для Windows (или WPF), чтобы позволить ему работать в полноэкранном режиме на дополнительном мониторе?В полноэкранном режиме на дополнительном мониторе
ответ
Код, там будет работать, но по умолчанию для основного монитора. Чтобы изменить это, вам нужно будет заменить вызовы на GetSystemMetrics будет звонить на GetMonitorInfo. Используя GetMonitorInfo, вы можете получить соответствующий RECT для передачи в SetWindowPos.
GetMonitorInfo позволяет получить RECT для любого монитора.
Существует MSDN Article on Position Apps in Multi-Monitor Setups, что может помочь объяснить ситуацию немного лучше.
private void Form1_Load(object sender, EventArgs e)
{
this.FormBorderStyle = FormBorderStyle.None;
this.Bounds = GetSecondaryScreen().Bounds;
}
private Screen GetSecondaryScreen()
{
foreach (Screen screen in Screen.AllScreens)
{
if (screen != Screen.PrimaryScreen)
return screen;
}
return Screen.PrimaryScreen;
}
Это не ясно из вашего вопроса, если вы ищете способ, чтобы переместить окно на второй монитор, а затем перейти в полноэкранный, или если вы просто хотите поддерживать полноэкранный режим на любом мониторе окно на (которые могут быть первичными или вторичными).
Если позднее, для окна WPF, хотя и не совсем то же, что и в полноэкранном режиме, вы можете удалить границы при максимальном увеличении и восстановить границу, если она не максимизирована. Нет необходимости проверять, какой монитор и т. Д. Отображение заголовка/заголовка контролируется граничным состоянием.
protected override void OnStateChanged(EventArgs e)
{
if (WindowState == WindowState.Maximized)
{
if (WindowStyle.None != WindowStyle)
WindowStyle = WindowStyle.None;
}
else if (WindowStyle != WindowStyle.SingleBorderWindow)
WindowStyle = WindowStyle.SingleBorderWindow;
base.OnStateChanged(e);
}
Заслуга Павлу за его основе форм ответа на текущий вопрос и Nir его ответа в this question.
Для приложений WPF смотрите this post. В конечном счете это зависит от того, когда WindowState установлен на Maximized. Если вы установите его в XAML или в конструкторе окон (то есть перед загрузкой окна), он всегда будет максимальным на основном дисплее. Если, с другой стороны, вы устанавливаете WindowState Maximized при загрузке окна - он будет максимизироваться на экране, на котором он был максимально увеличен.
** Спасибо! ** Помогло переместить код позиции восстановления из конструктора класса окна в обработчик _Loaded_. Единственное, что я должен добавить, это то, что класс Window отправляет уведомление _LocationChanged_ с настройками по умолчанию перед отправкой уведомления _Loaded_, поэтому вам следует пропустить уведомление _LocationChanged_, пока вы не восстановите позицию окна в обработчике _Loaded_. – Mar
В WPF: установите свойство WindowState в Normal (не Maximixed) и создайте событие Loaded. В этом случае напишите этот код:
this.Left = SystemParameters.PrimaryScreenWidth + 100;
this.WindowState = System.Windows.WindowState.Maximized;
Предполагается, что вторичный монитор находится справа от основного. – Paul
Метод расширения для увеличения окна на дополнительный монитор (если таковой имеется). Не предполагает, что вторичным монитором является System.Windows.Forms.Screen.AllScreens [2];
using System.Linq;
using System.Windows;
namespace ExtendedControls
{
static public class WindowExt
{
// NB : Best to call this function from the windows Loaded event or after showing the window
// (otherwise window is just positioned to fill the secondary monitor rather than being maximised).
public static void MaximizeToSecondaryMonitor(this Window window)
{
var secondaryScreen = System.Windows.Forms.Screen.AllScreens.Where(s => !s.Primary).FirstOrDefault();
if (secondaryScreen != null)
{
if (!window.IsLoaded)
window.WindowStartupLocation = WindowStartupLocation.Manual;
var workingArea = secondaryScreen.WorkingArea;
window.Left = workingArea.Left;
window.Top = workingArea.Top;
window.Width = workingArea.Width;
window.Height = workingArea.Height;
// If window isn't loaded then maxmizing will result in the window displaying on the primary monitor
if (window.IsLoaded)
window.WindowState = WindowState.Maximized;
}
}
}
}
работать как шарм ... – kennyzx
Я заметил, ответ, который выступает за установлением позиции в нагруженном событии, но это вызывает мерцание, когда окно впервые показано нормально, то до максимума. Если вы подписались на событие SourceInitialized в конструкторе и установить позицию там он будет обрабатывать максимизируя на вторичных мониторах без мерцания - Я предполагаю, что WPF здесь
public MyWindow()
{
SourceInitialized += MyWindow_SourceInitialized;
}
void MyWindow_SourceInitialized(object sender, EventArgs e)
{
Left = 100;
Top = 50;
Width = 800;
Height = 600;
WindowState = WindowState.Maximized;
}
Substitute COORDS для любого на своем дополнительном мониторе
- 1. Окно в полноэкранном режиме на втором мониторе
- 2. Окно дисплея в полноэкранном режиме на дополнительном мониторе с использованием Qt
- 3. Как отобразить форму на дополнительном мониторе?
- 4. окна отображения на дополнительном мониторе
- 5. ggplot2 png в полноэкранном режиме Powerpoint на дополнительном экране
- 6. Отображение формы Windows на дополнительном мониторе?
- 7. Папка Диалоговое окно на дополнительном мониторе
- 8. Восстановить максимизированное состояние на дополнительном мониторе
- 9. Ограничить максимальный размер окна в дополнительном мониторе
- 10. Мерцание на полноэкранном режиме
- 11. Ti.Media.showCamera() на полноэкранном режиме?
- 12. C#: Direct3D в элементе управления, а полноэкранный режим на дополнительном мониторе - какой лучший способ?
- 13. Как открыть ссылку на дополнительном мониторе с помощью HTML5?
- 14. Почему наше приложение Java не отображает окна на дополнительном мониторе?
- 15. Установить высоту экрана приложения wpf на дополнительном мониторе при максимальном
- 16. простой способ открыть модальный диалог на дополнительном мониторе?
- 17. Что определяет, когда окно будет увеличиваться на дополнительном мониторе?
- 18. Воспроизведение видео на полноэкранном режиме в QT
- 19. Проблема в открытии IE в полноэкранном режиме с использованием скрипта java на вторичном мониторе
- 20. FLVPlayback, в полноэкранном режиме?
- 21. ChromeDriver в полноэкранном режиме
- 22. UIImageView в полноэкранном режиме
- 23. PushViewController в полноэкранном режиме
- 24. Приложение в полноэкранном режиме
- 25. sdl: разблокировать мышь в полноэкранном режиме и сделать ее пригодной для использования на другом мониторе
- 26. Жесты в полноэкранном режиме
- 27. ScrollView в полноэкранном режиме
- 28. Flex в полноэкранном режиме?
- 29. VideoView в полноэкранном режиме
- 30. Приложения JavaFX Display на двух мониторах в полноэкранном режиме
Это работает, но требует ссылки на System.Windows.Forms.dll –