有没有办法让表单填充x%的屏幕?

问题描述:

我不知道是否有办法,而不是使用像素,在C#中调整窗体的大小?例如,让Form1填充屏幕的75%宽度和80%的屏幕高度?我已经尝试了一下阅读用户屏幕分辨率,然后从那里调整它,但我正在寻找不同的方法。我想这样做来解决不同屏幕分辨率的问题,所以我不必使用滚动条。有没有办法做到这一点,或者我应该只保留我的卷轴?有没有办法让表单填充x%的屏幕?

+1

这是WPF? Windows窗体? ASP.NET?你需要指定你正在谈论的技术。 C#只是语言。 – 2012-01-29 10:00:18

+0

如果用户的屏幕不够大或者显示的数据太多,您仍然必须将滚动条作为后备。所以既然你不能完全消除它们,这有什么意义呢?让用户选择是否希望表单占用整个屏幕。如果他们这样做,标题栏中有一个方便的“最大化”按钮。 – 2012-01-29 10:40:46

可以使用得到屏幕的分辨率:

Rectangle rect = Screen.AllScreens[0].Bounds; 
//Maybe you need to use WorkingArea instead of Bounds. 

从那里,你可以使用你想要的80%。更多的信息在这里:http://msdn.microsoft.com/en-us/library/system.windows.forms.screen.aspx

+0

是的,你肯定会想要使用['Screen.WorkingArea'](http://msdn.microsoft.com/en-us/library/system.windows.forms.screen.workingarea.aspx)。这不包括任务栏,停靠的窗口/工具栏等等。 – 2012-01-29 10:38:59

你会想要使用Load事件,所以你不受自动窗体缩放的影响。像这样:

protected override void OnLoad(EventArgs e) { 
     var scr = Screen.FromPoint(this.Location); 
     this.Size = new Size((int)(scr.WorkingArea.Width * 0.75), 
          (int)(scr.WorkingArea.Height * 0.80)); 
     this.Location = new Point((scr.WorkingArea.Width - this.Width)/2, 
            (scr.WorkingArea.Height - this.Height)/2); 
     base.OnLoad(e); 
    }