Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/330.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
C# 如何处理控件和表单';它以WinForms伸展_C#_Winforms_User Interface - Fatal编程技术网

C# 如何处理控件和表单';它以WinForms伸展

C# 如何处理控件和表单';它以WinForms伸展,c#,winforms,user-interface,C#,Winforms,User Interface,假设我在Designer中有以下表单: 我想让用户能够随心所欲地拉伸此表单,并且所有控件的位置都应如图所示,无论用户如何更改此表单的大小,因此他们应该占用相同的空间,并坚持使用相同的控件和边框 如何在WinForms中执行此操作?我知道有些东西像Dock等,但我没有找到在这种情况下使用它们的正确方法。在这种情况下,您想要的是锚定属性,而不是Dock。锚定意味着控件将始终与某些边(顶部、左侧、右侧和/或底部)保持相同的距离,即使这意味着必须更改大小;docking OTOH不关心边距,它只会填满

假设我在Designer中有以下表单:

我想让用户能够随心所欲地拉伸此表单,并且所有控件的位置都应如图所示,无论用户如何更改此表单的大小,因此他们应该占用相同的空间,并坚持使用相同的控件和边框


如何在WinForms中执行此操作?我知道有些东西像Dock等,但我没有找到在这种情况下使用它们的正确方法。

在这种情况下,您想要的是
锚定属性,而不是
Dock
。锚定意味着控件将始终与某些边(顶部、左侧、右侧和/或底部)保持相同的距离,即使这意味着必须更改大小;docking OTOH不关心边距,它只会填满一侧或所有一侧的所有可用空间

以下是您可能想要做的:

  • 将两个图像按钮锚定到顶部和右侧

  • 将OK按钮锚定到右侧和底部(我猜)

  • 将大的
    列表框
    锚定到所有侧面


只需在

  • 对于高度有限制的控件(如ListBox),设置锚点是不够的,应该将它们的值设置为false

  • 我建议转到表单集,以防止用户将窗口大小调整为不需要的大小。在您的情况下,请将其设置为可接受的最小大小,以防止丑陋的小表单和不可用的列表框


  • 使用一个固定面板的拆分面板。然后将
    ListBox.Dock
    设置为
    Fill