Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Winforms Windows窗体(或一般GUI开发)建议_Winforms_User Interface - Fatal编程技术网

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

Winforms Windows窗体(或一般GUI开发)建议,winforms,user-interface,Winforms,User Interface,我应该如何开发一个可以很好地调整大小的表单 虽然这听起来像是一个简单的问题,但我正在努力解决的问题是,我正在复制几年前在Swing中创建的现有应用程序。它围绕单个窗体构建,在选择不同选项时隐藏/显示面板 它大约有600 x 700像素宽,但它是一个固定大小的窗口 这是好的做法吗?GUI以这种方式工作很好,但是如果您查看其他应用程序,您可以轻松地调整它们的大小。虽然有些应用程序看起来很愚蠢,但是否应该有这样的选项 主屏幕由大约五个按钮组成,当最大化时,这看起来很可笑,但同时,如果表单在您开始调整表

我应该如何开发一个可以很好地调整大小的表单

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

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

这是好的做法吗?GUI以这种方式工作很好,但是如果您查看其他应用程序,您可以轻松地调整它们的大小。虽然有些应用程序看起来很愚蠢,但是否应该有这样的选项

主屏幕由大约五个按钮组成,当最大化时,这看起来很可笑,但同时,如果表单在您开始调整表单大小时就可以调整大小,那么它就变得愚蠢了

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


有什么建议/链接吗?

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

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


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

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

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

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

每个表单控件通过约束或约定隐式地具有一定的自由度。按惯例,按钮不调整大小,因此它们没有自由度(即使它们可以调整大小)。ListView和ListBox有两个自由度,水平方向显示每行更多数据,垂直方向显示更多行。单行文本框具有一个水平自由度。因为它们是单线,所以它们不会垂直扩展,但会水平扩展


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

除了布局面板(我最喜欢的是表格布局)之外,还需要熟悉锚、停靠(更多关于表格布局)和MinimumSize属性。在调整表单大小时,它们会为您做很多工作

您的大多数表单看起来都很傻,但我的一般规则是:

  • 按钮保持相同大小 无论形状大小(无顶部和顶部) 底部锚;没有左锚和右锚 锚定)
  • 按钮与按钮保持在同一位置 关于边界(锚) 组合:{Left,Top},{Left, 下},{右,上},{右, 底部})
  • 只有最右边的文本框会增长 调整大小时(定位=左侧和右侧) 对)
  • 单多行文本框控制表单 (锚定=左、右、上、下)
  • 对于多行文本框,最低的文本框控制表单
  • 最小尺寸尽可能小于640x480;最大800x600
  • 默认大小是MinimumSize——如果用户需要,可以让它变大