【问题标题】:Is there a way to make a Form fill x % of the screen?有没有办法让表单填满 x % 的屏幕?
【发布时间】:2012-01-29 09:55:28
【问题描述】:

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

【问题讨论】:

  • 这是 WPF 吗? Windows 窗体? ASP.NET?您需要指定您正在谈论的技术。 C# 只是一种语言。
  • 您仍然必须使用滚动条作为备用,以防用户的屏幕不够大或您有太多数据要显示。那么既然不能完全消除它们,那还有什么意义呢?让用户选择是否希望您的表单占据整个屏幕。如果他们这样做了,标题栏中会有一个方便的“最大化”按钮。

标签: c# .net winforms


【解决方案1】:

您需要使用 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);
    }

【讨论】:

    【解决方案2】:

    您可以使用以下方法获取屏幕分辨率:

    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

    【讨论】:

    • 是的,你肯定想使用Screen.WorkingArea。这不包括任务栏、停靠的窗口/工具栏等。
    猜你喜欢
    • 2011-02-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多