Как расположить диалоговое окно в левом верхнем углу текущего экрана? - PullRequest
1 голос
/ 11 июня 2019

Я пытаюсь расположить диалоговое окно WPF в верхнем левом углу экрана current .Однако я не знаю, как получить эти координаты для любого другого экрана, кроме основного.Для основного экрана Top и Left будет 0. Однако для любого другого экрана мне нужно знать смещение.Я мог бы иметь второй или даже третий экран.Чтобы усложнить задачу: Эти другие экраны можно (теоретически) расположить слева, сверху или ниже основного экрана.

Я провел небольшое исследование, но не смог найтирешение.Может ли кто-нибудь указать мне правильное направление?

Ответы [ 2 ]

0 голосов
/ 12 июня 2019

Как оказалось, я просто не видел необходимых свойств: у каждого объекта Screen есть свое собственное свойство Top и Left внутри его WorkingArea.

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

var topLeftCornerOfMainWindow = new System.Drawing.Point((int)System.Windows.Application.Current.MainWindow.Left, (int)System.Windows.Application.Current.MainWindow.Top);
var currentScreen = Screen.FromPoint(topLeftCornerOfMainWindow);

this.Top = currentScreen.WorkingArea.Top;
this.Left = currentScreen.WorkingArea.Left;
this.Width = currentScreen.WorkingArea.Width;
this.Height = currentScreen.WorkingArea.Height;
0 голосов
/ 11 июня 2019

Попробуйте установить значения Window.Left и Window.Top:

window.Left = 0;
window.Top = 0-window.Height;

window.ShowDialog();
...