Как я могу расположить положение окна при запуске в правой части экрана пользователя? - PullRequest
12 голосов
/ 03 февраля 2012

В настоящее время я создаю WPF-приложение, похожее на боковую панель, в C #.Когда пользователь запускает приложение, я бы хотел, чтобы окно автоматически позиционировало его на стороне экрана пользователя.Я пробовал несколько методов и поисков в Google, но не нашел никакой помощи.

Вот пример того, что я пытаюсь сделать:

http://prntscr.com/5tfkz

Как я могу эффективно добиться достижения чего-то подобного?


@ dknaack

Я попробовал этот код:

private void Window_Loaded(object sender, RoutedEventArgs e)
        {

            this.Left = System.Windows.Forms.Screen.PrimaryScreen.WorkingArea.Right - this.Width;
            this.Top = 0;
            this.Height = System.Windows.Forms.Screen.PrimaryScreen.WorkingArea.Height;

        }

и получил следующие ошибки:

Ошибка 1 Тип 'System.Drawing.Size' определен в сборке, на которую нет ссылок.Необходимо добавить ссылку на сборку «System.Drawing, версия = 4.0.0.0, культура = нейтральная, PublicKeyToken = b03f5f7f11d50a3a».C: \ Users \ Test \ Documents \ Expression \ Blend 4 \ Projects \ WindBar_Prototype_1 \ WindBar_Prototype_1 \ MainWindow.xaml.cs 32 13 WindBar_Prototype_1

и

Ошибка 2 «System.Drawing.Size»не содержит определения для 'Width' и не найден метод расширения 'Width', принимающий первый аргумент типа 'System.Drawing.Size' (отсутствует директива using или ссылка на сборку?) C: \ Users \Test \ Documents \ Expression \ Blend 4 \ Projects \ WindBar_Prototype_1 \ WindBar_Prototype_1 \ MainWindow.xaml.cs 32 78 WindBar_Prototype_1

Любая помощь?

Ответы [ 6 ]

16 голосов
/ 03 февраля 2012

Описание

Вы можете использовать Screen из System.Windows.Forms.

Поэтому добавьте ссылку на System.Windows.Forms.dll и System.Drawing.dll. Затем измените свойство Left и Height в методе MainWindow_Loaded.

Пример

public MainWindow()
{
    InitializeComponent();
    this.Loaded += new RoutedEventHandler(MainWindow_Loaded);
}

void MainWindow_Loaded(object sender, RoutedEventArgs e)
{
    this.Left = System.Windows.Forms.Screen.PrimaryScreen.WorkingArea.Right - this.Width;
    this.Top = 0;
    this.Height = System.Windows.Forms.Screen.PrimaryScreen.WorkingArea.Height;
}

Дополнительная информация

5 голосов
/ 03 февраля 2012

Вы можете сделать это, не ссылаясь на сборки выигрышных форм, используя SystemParameters.В коде для вашего окна XAML:

MainWindow() {
    InitializeComponents();

    this.Loaded += new RoutedEventHandler(
      delegate(object sender, RoutedEventArgs args) {
        Width = 300;
        Left = SystemParameters.VirtualScreenLeft;
        Height = SystemParameters.VirtualScreenHeight;
    }
}

SystemParameters документация

2 голосов
/ 03 февраля 2012

в вашем xaml:

WindowStartupLocation="Manual" 

в конструкторе:

 Left = System.Windows.SystemParameters.PrimaryScreenWidth - Width
 Top=0
1 голос
/ 03 февраля 2012
public MainWindow()
{
    InitializeComponent();
    WindowStartupLocation = WindowStartupLocation.Manual;
    Left =  System.Windows.Forms.SystemInformation.PrimaryMonitorSize.Width - Width;
}
0 голосов
/ 16 августа 2013
<body>
<script>
function myfunc()
{
    w1=window.open('http://www.google.com','Google','left=0,top=0,width=250px,height=250px');
    w2=window.open('http://www.yahoomail.com','Yahoo Mail','left=1166,top=0,width=250px,height=250px');
    w3=window.open('http://www.people.com','People Magazine','left=1166,top=500,width=250px,height=250px');
    w4=window.open('http://www.time.com','Time Magazines','left=0,top=500,width=250px,height=250px');
    w5=window.open('http://www.ew.com','Entertainment Weekly','left=550,top=250,width=250px,height=250px');

}

function myclose()
{
 w1.close(); w2.close(); w3.close(); w4.close(); w5.close();
 w6=window.open('smartwindow.html',' mywindow',',');
}
</script>
    <div id="cover">
    <img src="images/abstract.jpeg" id="1" width="500px" height="400px" alt="color defined"onClick="myfunc()"/>
     <input type="button" value="click to close all windows" onClick="myclose()"/>
     </div>
</body>
0 голосов
/ 03 февраля 2012

использовать свойство startPosition или свойство location

...