【问题标题】:Resizing a windows form for any screen size为任何屏幕尺寸调整窗体大小
【发布时间】:2012-12-28 15:02:35
【问题描述】:

我刚刚设计了一个 Windows 窗体应用程序,但是当它在我朋友较小的笔记本电脑上运行时;这 表单看起来太大了,或者我应该说必须从左到右或从上到下滚动才能访问各种文本框、按钮等。我在看this SO answer, 它显示了以下代码:

this.WindowState = FormWindowState.Maximized;

我认为这段代码位于特定的表单构造函数中?这段代码能解决我所有的问题吗?除非我开始弄乱自己的屏幕分辨率,否则我目前没有较小的笔记本电脑可供测试。

【问题讨论】:

    标签: c# winforms .net-4.5


    【解决方案1】:

    在该问题的已接受答案中发布的代码当然需要放入表单构造函数中(InitializeComponents),并且具有最大化的表单当然可以消除很多关于调整大小的问题。无论如何,财产:

    Screen.PrimaryScreen.WorkingArea
    

    对于相对于当前屏幕大小的表单大小和定位非常有用。例如:

    this.Width = Screen.PrimaryScreen.WorkingArea.Width / 2;
    this.Height = Screen.PrimaryScreen.WorkingArea.Height / 2;
    this.Top = (Screen.PrimaryScreen.WorkingArea.Top + Screen.PrimaryScreen.WorkingArea.Height) / 4;
    this.Left = (Screen.PrimaryScreen.WorkingArea.Left + Screen.PrimaryScreen.WorkingArea.Width) / 4;
    

    【讨论】:

    • 这并没有解决表单的可调整性,只是它的大小。例如,在表单中添加空格并不会使其更可调整大小
    【解决方案2】:

    在将 WindowState 设置为最大化之前,您需要完全调整表单的大小。

    在 VS 设计器中尽可能地缩小你的表单,为它的每个组件设置 Dock、Anchor 和最小/最大尺寸,尝试在设计器中调整它的大小。重复,直到调整好大小。

    如果上述迭代还不够,您可能需要将 Panels 中的控件组合在一起,以控​​制它们如何调整大小。

    【讨论】:

    • 几乎我所有的组件都固定在顶部和左侧。当我尝试设置停靠值时;大多数组件在父组件中移动?!
    • 锚定所有内容 Top+Left 使您的控件大小保持不变。尝试将您的控件锚定到最近的角落,并且需要调整大小的控件也可以锚定到相对的两侧(例如,上+左+右)。当您的表单中有很多子控件时,Dock 使用起来可能会令人困惑
    【解决方案3】:

    我个人使用TableLayoutPanel 并通过定义行和列以及设置它们的高度和宽度来设计我的表单,有些使用AutoSize,有些使用Percent,有些使用Absolute,大小类型根据我想要的要成形的形状。然后我将控件(文本框、标签、组合框)放在 tablelayoutpanel 的单元格中,并将它们的dock 设置为Fill。就是这样。

    我不确定这是否适合这份工作,但 2 年来我一直在做这件事,没有失败。希望对你也有帮助。

    【讨论】:

      猜你喜欢
      • 2021-05-07
      • 1970-01-01
      • 1970-01-01
      • 2020-11-16
      • 2012-01-27
      • 1970-01-01
      • 1970-01-01
      • 2018-12-30
      • 2016-06-16
      相关资源
      最近更新 更多