it-swarm.com.de

So bestimmen Sie die Bildschirmbreite/-höhe mit C #

Ich möchte die Breite und Höhe einer Window dynamisch basierend auf der maximalen Breite/Höhe des Benutzers einstellen. Wie kann ich das programmgesteuert ermitteln?

21
Shamim Hafiz

Für den Hauptbildschirm:

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

( Beachten Sie, dass es auch einige andere Eigenschaften gibt, die sich auf den Bildschirm beziehen, die von verschiedenen Faktoren abhängen, Full* & Maximised*)

Virtueller Bildschirm:

SystemParameters.VirtualScreenWidth
SystemParameters.VirtualScreenHeight
34
H.B.

Wenn Sie möchten, dass die spezifischen Dimensionen des Monitors, auf denen Ihr Programm ausgeführt wird, ausgeführt werden (wenn mehrere Monitoren ausgeführt werden), können Sie auch Folgendes verwenden:

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

Dadurch wird ein Bildschirmobjekt zurückgegeben, das auf den Monitor verweist, auf dem das Programm ausgeführt wird. Von dort aus können Sie die Eigenschaft currentScreen.Bounds.Width/Height (für die volle Größe) oder currentScreen.WorkingArea.Width/Height (Minus-Taskleiste usw.) verwenden, je nachdem, was Sie möchten. 

12
Dennis Morgan

verwenden Sie das Bildschirmobjekt

Screen.PrimaryScreen.Bounds.Width
6
DeveloperX

Sie können das Ereignis SizeChanged verwenden

SizeChanged="MyWindow_SizeChanged"

Dann in Ihrem Event-Handler

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

dabei ist MainGrid ein Container für alle Inhalte in MyWindow.

2
lewi

Ich konnte keine der oben genannten Lösungen unter .NET 4.0.30319.42000 mit Windows 10 Enterprise verwenden, wenn ich sie aus dem Ranorex Studio 8.0.1 + git.8a3e1a6f aufrief

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

Sie können die Höhe und Breite des Bildschirms erhalten:

int height = System.Windows.Forms.SystemInformation.PrimaryMonitorSize.Height;
int width = System.Windows.Forms.SystemInformation.PrimaryMonitorSize.Width;

Setzen Sie dann die Eigenschaften Height und Width des Fensters auf die Werte in der Initialisierung.

this.Height = height;
this.Width = width;

Funktioniert die Höhe und Breite des Bildschirms in WinForms oder in ASP .NET. Kein Problem, kein Aufwand, außer Sie müssen die System.Windows.Forms-Assembly in Ihrem Projekt referenzieren, wenn es kein WinForm-Projekt ist.

0
vapcguy