web-dev-qa-db-ja.com

起動時のウィンドウの位置をユーザーの画面の右側に配置するにはどうすればよいですか?

私は現在、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」が見つかりませんでした(usingディレクティブまたはアセンブリリファレンス?)C:\ Users\Test\Documents\Expression\Blend 4\Projects\WindBar_Prototype_1\WindBar_Prototype_1\MainWindow.xaml.cs 32 78 WindBar_Prototype_1

何か助けはありますか?

12
anonymous

説明

System.Windows.FormsからScreenを使用できます。

したがって、System.Windows.Forms.dllおよびSystem.Drawing.dllへの参照を追加します。次に、MainWindow_LoadedメソッドのLeftプロパティとHeightプロパティを変更します。

サンプル

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

詳しくは

16
dknaack

SystemParametersを使用すると、Winフォームアセンブリを参照せずにこれを行うことができます。ウィンドウXAMLの背後にあるコード:

MainWindow() {
    InitializeComponents();

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

SystemParametersドキュメント

5
KurToMe

xamlで:

WindowStartupLocation="Manual" 

コンストラクター内:

 Left = System.Windows.SystemParameters.PrimaryScreenWidth - Width
 Top=0
2
GameAlchemist
public MainWindow()
{
    InitializeComponent();
    WindowStartupLocation = WindowStartupLocation.Manual;
    Left =  System.Windows.Forms.SystemInformation.PrimaryMonitorSize.Width - Width;
}
1
Eugene Cheverda

startPositionプロパティまたはlocationプロパティを使用します

0
yoozz