我想设置宽度&根据用户屏幕最大宽度/高度动态Window
的高度。如何以编程方式确定?
答案 0 :(得分:35)
对于主屏幕:
System.Windows.SystemParameters.PrimaryScreenWidth
System.Windows.SystemParameters.PrimaryScreenHeight
(请注意,还有一些其他与主要屏幕相关的属性取决于各种因素,Full*
& Maximised*
)
虚拟屏幕:
SystemParameters.VirtualScreenWidth
SystemParameters.VirtualScreenHeight
答案 1 :(得分:12)
如果您想要运行程序的监视器的特定尺寸(如果某人正在运行多个监视器),您还可以使用:
var helper = new WindowInteropHelper(this); //this being the wpf form
var currentScreen = Screen.FromHandle(helper.Handle);
这将返回一个屏幕对象,引用运行该程序的监视器。从那里你可以使用currentScreen.Bounds.Width
/ Height
属性(完整大小)或currentScreen.WorkingArea.Width
/ Height
(减去任务栏等),具体取决于你想要的。
答案 2 :(得分:6)
使用屏幕对象
Screen.PrimaryScreen.Bounds.Width
答案 3 :(得分:2)
您可以使用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
中所有内容的容器。
答案 4 :(得分:1)
从Ranorex Studio 8.0.1 + git.8a3e1a6f调用它时,我无法使用.NET 4.0.30319.42000上的任何解决方案与Windows 10企业版,所以我使用了这行
using WinForms = System.Windows.Forms;
[…]
SetWindowPos(processes[0].MainWindowHandle,
0,
y,
x,
WinForms.SystemInformation.PrimaryMonitorSize.Width,
WinForms.SystemInformation.PrimaryMonitorSize.Height,
SWP.SHOWWINDOW);
答案 5 :(得分:0)
您可以获取屏幕的高度和宽度:
int height = System.Windows.Forms.SystemInformation.PrimaryMonitorSize.Height;
int width = System.Windows.Forms.SystemInformation.PrimaryMonitorSize.Width;
然后将窗口的Height
和Width
属性设置为初始化中的那些属性。
this.Height = height;
this.Width = width;
在WinForms或ASP .NET中获取屏幕的高度和宽度。没事,不要大惊小怪,除了如果它不是WinForm项目,则需要在项目中引用System.Windows.Forms
程序集。