Как определить ширину / высоту экрана с помощью C # - PullRequest
22 голосов
/ 08 июня 2011

Я хочу установить ширину и высоту Window динамически в зависимости от максимальной ширины / высоты пользовательских экранов. Как я могу определить это программно?

Ответы [ 6 ]

35 голосов
/ 08 июня 2011

Для основного экрана:

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

( Обратите внимание, что существуют также некоторые другие свойства, связанные с основным экраном, которые зависят от различных факторов, Full* & Maximised*)

Виртуальный экран:

SystemParameters.VirtualScreenWidth
SystemParameters.VirtualScreenHeight
13 голосов
/ 08 октября 2014

Если вам нужны конкретные размеры монитора, на котором работает ваша программа (если у кого-то запущено более одного монитора), вы также можете использовать:

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

Это вернет экранный объект, ссылающийся на мониторпрограмма работаетОттуда вы можете использовать свойство currentScreen.Bounds.Width / Height (для полного размера) или currentScreen.WorkingArea.Width / Height (без панели задач и т. Д.) В зависимости от того, что вы хотите.

7 голосов
/ 08 июня 2011

использовать экранный объект

Screen.PrimaryScreen.Bounds.Width
2 голосов
/ 08 июня 2011

Вы можете использовать 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);
    }
}

где MainGrid - контейнер для всего содержимого в MyWindow.

1 голос
/ 12 февраля 2018

Я не смог использовать ни одно из перечисленных выше решений в .NET 4.0.30319.42000 с Windows 10 Enterprise при вызове из Ranorex Studio 8.0.1 + git.8a3e1a6f, поэтому я использовал строку

using WinForms = System.Windows.Forms;
[…]
                SetWindowPos(processes[0].MainWindowHandle,
                    0,
                    y,
                    x,
                    WinForms.SystemInformation.PrimaryMonitorSize.Width,
                    WinForms.SystemInformation.PrimaryMonitorSize.Height,
                    SWP.SHOWWINDOW);
0 голосов
/ 28 ноября 2018

Вы можете получить высоту и ширину экрана:

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

Затем установите свойства Window * Height и Width в свойства инициализации.

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

Работает, чтобы получить высоту и ширину экрана в WinForms или в ASP .NET. Без суеты, без суеты, за исключением того, что вам нужно ссылаться на сборку System.Windows.Forms в вашем проекте, если это не проект WinForm.

...