如何使Windows窗体适合任何屏幕分辨率?

时间:2011-02-22 06:41:48

标签: c# winforms c#-3.0 desktop-application

我使用C#在VS 2008上工作。以下代码对我不起作用。我的表单设计为1024 x 768分辨率。

我们的客户笔记本电脑的分辨率为1366 x 768。为了解决这个问题,我在Form Load事件中设置了以下代码:

this.Location = new Point(0, 0);
this.Size = Screen.PrimaryScreen.WorkingArea.Size;

但是表单没有根据屏幕分辨率调整大小,表单底部被隐藏或剪切,或者我错过了滚动条。

有什么方法可以解决这个问题吗?请告诉我语法。提前致谢

8 个答案:

答案 0 :(得分:32)

你不能开始最大化吗?

System.Windows.Forms.Form.WindowState属性设置为FormWindowState.Maximized

答案 1 :(得分:17)

如果要以编程方式设置表单大小,请将表单的StartPosition属性设置为Manual。否则表单自己的定位和大小调整算法会干扰您的。这就是您遇到问题中提到的问题的原因。

示例:以下是我将表单大小调整为原始大小和屏幕工作区大小之间的大小。我也把表格放在工作区中心:

public MainView()
{
    InitializeComponent();

    // StartPosition was set to FormStartPosition.Manual in the properties window.
    Rectangle screen = Screen.PrimaryScreen.WorkingArea;
    int w = Width >= screen.Width ? screen.Width : (screen.Width + Width) / 2;
    int h = Height >= screen.Height ? screen.Height : (screen.Height + Height) / 2;
    this.Location = new Point((screen.Width - w) / 2, (screen.Height - h) / 2);
    this.Size = new Size(w, h);
}

请注意,仅将WindowState设置为FormWindowState.Maximized不会更改已恢复窗口的大小。因此,只要窗口最大化,窗口可能看起来很好,但是在恢复时,窗口大小和位置仍然可能是错误的。因此,即使您打算以最大化方式打开窗口,我也建议您设置大小和位置。

答案 2 :(得分:10)

最大化表单可能有帮助,或者您可以在表单加载时手动执行此操作:

代码块

this.Location = new Point(0, 0);

this.Size = Screen.PrimaryScreen.WorkingArea.Size;

然后,使用锚定,因此表单内的子控件会自动适合您表单的新大小。

希望这有帮助,

答案 3 :(得分:6)

将form属性设置为以最大化状态打开。

this.WindowState = FormWindowState.Maximized;

答案 4 :(得分:5)

int h = Screen.PrimaryScreen.WorkingArea.Height;
int w = Screen.PrimaryScreen.WorkingArea.Width;
this.ClientSize = new Size(w , h);

答案 5 :(得分:4)

您只需设置窗口状态

即可
this.WindowState = System.Windows.Forms.FormWindowState.Maximized;

答案 6 :(得分:3)

只需为您的Windows窗体设置Autoscroll = true ..(这不是很好的解决方案,但很有用)..

尝试使用面板(Autoscroll property = true

答案 7 :(得分:2)

你总是可以告诉窗口以最大化开始...它应该给你相同的结果......像这样:this.WindowState = FormWindowState.Maximized;

P.S。您也可以尝试(我不建议这样做)减去任务栏的高度。