代码之家  ›  专栏  ›  技术社区  ›  Finglas

Windows窗体(或一般的GUI开发)建议

  •  0
  • Finglas  · 技术社区  · 15 年前

    我应该如何开发一个可以很好地调整大小的窗体?

    虽然这听起来像一个简单的问题,但我正在努力解决的问题是,我正在复制几年前Swing开发的现有应用程序。它围绕一个单独的表单构建,当您选择不同的选项时,隐藏/显示面板。

    它的宽度约为600 x 700像素,但它是一个固定大小的窗口。

    这是个好做法吗?图形用户界面可以这样很好地工作,但是如果您查看其他应用程序,您可以轻松地调整它们的大小。当然,有些应用程序看起来很蠢,但是应该有选择吗?

    主屏幕由大约五个按钮组成,当最大化时,这看起来很荒谬,但同时,如果表单可以调整大小,当您开始调整表单的大小时,它会变得愚蠢。

    我知道布局管理器等等,所以不需要告诉我检查这些,我的主要问题是我可以生成一个优秀的固定宽度应用程序,但这就是问题所在。

    对此有什么建议/链接吗?

    3 回复  |  直到 15 年前
        1
  •  3
  •   Greg D    15 年前

    固定大小的GUI通常是一个坏主意,因为大多数表单都有一个用户界面元素,可以合理地调整大小。

    首先考虑一个只包含两个按钮的表单。(一个愚蠢的形式,是的,但是为了讨论,我们假设它是工作的正确的事情)当最初以正确的方式调整大小时(适当的本地化,例如),没有很好的理由使形式可以调整大小。如果你放大或使窗体变形,你只会使单击按钮的区域变大,但是你会单击一个比按钮小的区域来调整它的大小,所以没有理由。在这种情况下,表单的大小调整是没有意义的,因为添加额外的控件对用户没有好处。

    现在考虑一个包含ListView的表单。使这个表单在两个维度上都可以调整大小有明显的可用性好处。ListView可能包含的项目数超过了在较小区域(水平和垂直)中所能显示的项目数,因此此窗体可以完全调整大小以允许用户显示所需的任意多或任意少的数据。

    每一种形式控制都隐含地具有一定的自由度,无论是通过约束还是通过约定。通常,按钮不调整大小,因此它们没有自由度(即使它们可以调整大小)。列表视图和列表框有两个自由度,水平显示每行更多数据,垂直显示更多行。单行文本框有一个自由度,水平。因为它们是单行的,所以它们不垂直展开,但水平展开。

    这些自由度可以帮助您确定表单的布局。调整窗体大小时,具有自由度的窗体元素应按适当的方向调整大小。我更喜欢在通常通过拆分器分隔区域的区域中只使用一个具有两个自由度的控件来设计表单。我更喜欢避免显式的表布局面板,除非有非常特殊的需求,因为当有表布局可供使用时,很容易使表单过于复杂。然而,WinForms中的锚为控制布局提供了非常强大和灵活的抽象,因此我强烈建议使用它们。

        2
  •  4
  •   Justin Niessner    15 年前

    就个人而言,我认为固定大小的表单是一种糟糕的用户体验。

    我总是试图建立我的,以便他们可以优雅地调整大小(即使他们看起来有点奇怪)。

    如果您使用.NET进行WinForms开发,您可以轻松地使用表布局,然后锚定控件,以便它们有礼貌地调整大小。

        3
  •  0
  •   Austin Salonen    15 年前

    除了布局面板(我最喜欢的是表格布局),熟悉锚定、停靠(更多用于表格布局)和最小尺寸属性。在调整窗体大小方面,它们为您做了很多工作。

    你的大多数表格看起来都很呆板,但我的一般规则是:

    1. 纽扣尺寸不变 无论形状大小(无顶部和 底部锚;无左右锚 锚)
    2. 按钮与 相对于边界(锚定 组合:左,上,左, 下,右,上,右, 底部}
    3. 只有最右边的文本框才会增长 调整大小时(锚定=左和 对了。
    4. 单多行文本框规则窗体 (锚定=左、右、上、下)
    5. 对于多行文本框,最低的文本框控制窗体。
    6. 最小尺寸尽可能小于640x480;最大800x600。
    7. 默认的大小是最小值——如果用户需要,可以让它变大。