如何在启动时将窗口的位置定位到用户屏幕的右侧?

时间:2012-02-02 22:26:26

标签: c# wpf window location sidebar

我目前正在C#中创建类似侧边栏的WPF应用程序。当用户启动应用程序时,我希望窗口自动将其自身定位到用户屏幕的一侧。我尝试了一些方法和谷歌搜索,但没有找到任何帮助。

以下是我正在尝试做的一个例子:

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,Version = 4.0.0.0,Culture = neutral,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'的定义,并且没有可以找到接受类型'System.Drawing.Size'的第一个参数的扩展方法'Width'(你是否错过了使用指令或程序集引用?)C:\ Users \ Test \ Documents \ Expression \ Blend 4 \ Projects \ WindBar_Prototype_1 \ WindBar_Prototype_1 \ MainWindow.xaml.cs 32 78 WindBar_Prototype_1

有任何帮助吗?

6 个答案:

答案 0 :(得分:16)

描述

您可以使用Screen中的System.Windows.Forms

因此,请添加对System.Windows.Forms.dllSystem.Drawing.dll的引用。然后更改Left方法中的HeightMainWindow_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;
}

更多信息

答案 1 :(得分:5)

您可以使用SystemParameters在不引用win form程序集的情况下执行此操作。在窗口XAML背后的代码中:

MainWindow() {
    InitializeComponents();

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

SystemParameters documentation

答案 2 :(得分:2)

你的xaml中的

WindowStartupLocation="Manual" 

在构造函数中:

 Left = System.Windows.SystemParameters.PrimaryScreenWidth - Width
 Top=0

答案 3 :(得分:1)

public MainWindow()
{
    InitializeComponent();
    WindowStartupLocation = WindowStartupLocation.Manual;
    Left =  System.Windows.Forms.SystemInformation.PrimaryMonitorSize.Width - Width;
}

答案 4 :(得分:0)

使用startPosition属性或位置属性

答案 5 :(得分:-1)

<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>