私は現在、C#でサイドバーのようなWPFアプリケーションを作成しています。ユーザーがアプリケーションを起動したときに、ウィンドウがユーザーの画面の横に自動的に配置されるようにしたいと思います。私はいくつかの方法とグーグル検索を試しましたが、助けが見つかりませんでした。
これが私がやろうとしていることの例です:
どうすればこのようなことを効率的に達成できますか?
@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
何か助けはありますか?
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;
}
SystemParameters
を使用すると、Winフォームアセンブリを参照せずにこれを行うことができます。ウィンドウXAMLの背後にあるコード:
MainWindow() {
InitializeComponents();
this.Loaded += new RoutedEventHandler(
delegate(object sender, RoutedEventArgs args) {
Width = 300;
Left = SystemParameters.VirtualScreenLeft;
Height = SystemParameters.VirtualScreenHeight;
}
}
xamlで:
WindowStartupLocation="Manual"
コンストラクター内:
Left = System.Windows.SystemParameters.PrimaryScreenWidth - Width
Top=0
public MainWindow()
{
InitializeComponent();
WindowStartupLocation = WindowStartupLocation.Manual;
Left = System.Windows.Forms.SystemInformation.PrimaryMonitorSize.Width - Width;
}
startPositionプロパティまたはlocationプロパティを使用します