web-dev-qa-db-ja.com

C#を使用して画面の幅/高さを決定する方法

ユーザー画面の最大幅/高さに基づいて、Windowの幅と高さを動的に設定したい。これをプログラムで決定するにはどうすればよいですか?

22
Shamim Hafiz

主画面の場合:

System.Windows.SystemParameters.PrimaryScreenWidth
System.Windows.SystemParameters.PrimaryScreenHeight

さまざまな要因に依存する他のプライマリ画面関連のプロパティもあることに注意してください、Full*Maximised*

仮想画面:

SystemParameters.VirtualScreenWidth
SystemParameters.VirtualScreenHeight
35
H.B.

プログラムが実行されているモニターの特定の次元が必要な場合(誰かが複数のモニターを実行している場合)、次のコマンドも使用できます。

var helper = new WindowInteropHelper(this); //this being the wpf form 
var currentScreen = Screen.FromHandle(helper.Handle);

これにより、プログラムが実行されているモニターを参照する画面オブジェクトが返されます。そこから、currentScreen.Bounds.Width/Heightプロパティ(フルサイズ)またはcurrentScreen.WorkingArea.Width/Height(マイナスタスクバーなど)を使用できます。あなたが欲しい。

13
Dennis Morgan

画面オブジェクトを使用

Screen.PrimaryScreen.Bounds.Width
7
DeveloperX

SizeChangedイベントを使用できます

SizeChanged="MyWindow_SizeChanged"

次に、イベントハンドラーで、

private void Window_SizeChanged(object sender, SizeChangedEventArgs e)
{
    if (this.MinWidth > 0 && this.MinHeight > 0)
    {
        double heightScaleFactor = e.NewSize.Height / this.MinHeight;
        double widthScaleFactor = e.NewSize.Width / this.MinWidth;            
        mainGrid.LayoutTransform = new ScaleTransform(heightScaleFactor, widthScaleFactor);
    }
}

ここで、MainGridMyWindowのすべてのコンテンツのコンテナです。

2
lewi

Ranorex Studio 8.0.1 + git.8a3e1a6fから呼び出す場合、Windows 10 Enterpriseで.NET 4.0.30319.42000の下で上記のソリューションを使用できなかったため、次の行を使用しました。

using WinForms = System.Windows.Forms;
[…]
                SetWindowPos(processes[0].MainWindowHandle,
                    0,
                    y,
                    x,
                    WinForms.SystemInformation.PrimaryMonitorSize.Width,
                    WinForms.SystemInformation.PrimaryMonitorSize.Height,
                    SWP.SHOWWINDOW);
1
Sae1962