创建可重新调整大小的UI表单的一些想法

时间:2011-06-24 14:18:16

标签: c# winforms

C#WinForms: 我试图找到一个很好的方法来解决我在这张图片中调整大小的问题。 蓝色区域:无论表单大小如何,我希望它具有固定大小。 红色区域:我想在调整表单大小时调整大小。 我唯一希望蓝色区域正确调整大小的时候就是当我改变语言时所以一些非英语语言如此,如果标签,复选框等中的翻译文本变得更长,我希望它仍然适合那里。 我以为我可以使用两个列的TableLayout,在这个表格布局的左栏中放置一个Panel并在其中绘制我的控件,...但是如何将左面板保持在符合我的蓝色区域的固定大小要求?

谢谢

enter image description here

4 个答案:

答案 0 :(得分:2)

您可以轻松使用面板。将顶部面板上的蓝色和橙色区域的两个面板放置,将其DockStyle设置为Top。对于蓝色区域,将DockStyle设置为Left,对于Orange - to Fill

如果您需要根据其内容自动调整橙色部分的宽度,请将tableLayoutControl放入其中并将控件放入其单元格中。然后你应该把它放到另一个tableLayoutControl中,它包含你的两个面板(蓝色和橙色)

没有其他简单的方法可以根据语言的语言调整左侧部分的大小(除非您知道其他语言的大小,并以编程方式更改它)

修改

正如评论中提到的F​​rosty840,您可以使用面板执行相同的操作,只需将其AutoSize设置为true,将AutoSizeMode设置为GrowAndShrink

答案 1 :(得分:1)

这应该有效:

在表单上删除FlowLayoutPanel。 将两个面板放在上面。一个用于左侧内容,一个用于右侧。 将左侧的AutoSize属性设置为true。 在这个Panel中,我将使用启用了AutoSize的TableLayoutPanel作为控件。

在第二个面板上,您应该启用左侧锚点,顶部和右侧以使其占用剩余的可用空间。

对于微调,您可以设置控件的边距和填充。

希望有所帮助。一般来说,你几乎可以使用winforms实现各种自动化UI,你只需要找出最好的方法。我几乎可以肯定,我可以在30分钟内做到这一点。

可用于实现可调整大小的表单的一些常规属性/控件:

  • 锚点(上,左,下,右)。定义控件在调整大小时的行为方式。如果您希望控件在调整大小时位于右侧,请将“锚点”设置为“顶部”,“右侧”。如果您希望它水平增长,请将其设置为“上”,“左”,“右”。如果您希望它水平和垂直增长,请将其设置为“上”,“左”,“下”,“右”。对于FlowLayoutPanel或TableLayoutPanel内部的控件,锚点的行为略有不同,并定义控件应附加到哪一侧。

  • Dock,允许Control在一侧(顶部,左侧,底部或右侧,或使用最大可用空间(填充)

  • 连接到其父级)
  • 自动调整大小和AutoSizeMode(GrowOnly,GrowAndShring) - 允许控件调整大小到所需或可用空间。可以与MinimumSize和MaximumSize一起使用。

  • 边距 - 定义控件在其自身与父级(或堆栈中的下一个)之间声明的空间。可以设置为左,右,上和下

  • 填充 - 定义一个控件在它自己和它的孩子之间的空间。

  • TableLayoutPanel是一个容器,您可以在其中定义具有固定宽度,百分比值或仅自动调整大小的行。如果您将一个控件放在TableLayoutPanel中,您可以告诉它使用Rowspan / Colspan属性的多个列/行

  • FlowLayoutPanel - 将所有控件放在水平或垂直堆栈上。

  • 如果您有嵌套结构,可能很难选择或移动控件。 Visual Studio有一个工具窗口,显示可以帮助您的文档树。

  • 一般来说:保持简单。通常有一个比TableLayoutPanel内的TableLayoutPanel嵌套TableLayoutPanel更简单的解决方案(你明白了吗?)

答案 2 :(得分:0)

如果我是你并且正在使用新的UI屏幕,我会给WPF / XAML一个镜头。在调整大小和布局方面要好得多:)

答案 3 :(得分:0)

我认为您可以使用SplitContainer。您可以将蓝色部分放在左侧面板中,将红色部分放在SplitContainer的右侧面板中,并保持滑块位置固定。

对于演示,请查看此article