【问题标题】:Is there a better way to handle these controls, FlowLayoutPanel seems to be lacking.有没有更好的方法来处理这些控件,FlowLayoutPanel 似乎缺少。
【发布时间】:2014-06-29 22:06:50
【问题描述】:

目前我正在使用FlowLayoutPanel 来显示我的自定义控件,到目前为止它运行良好,但是当我想根据用户请求更改控件的布局时,它似乎缺少。我一直在尝试找到一种方法来更改FlowLayoutPanelWrapContents 属性,以使用新属性重新应用面板的布局,但仍然不足。

所以我想知道是否有完全不同的解决方案。

我想向用户显示两种类型的控件,横幅和指示器。每个横幅都有 24-48 个指示器(它们代表电气板)。我想以两种方式向用户显示这些控件。在一个长列表中的第一个(FlowLayoutPanelWrapContents = false 做得很好)和列表列中的第二个,每个横幅一个(因此每列将由一个横幅开头,其下方的指示器。)

下面是FlowLayoutPanel 在这项任务中的表现。对于一个长列表的第一种方法,它很简单,只需设置WrapContents = false,所有内容都会排列在一个漂亮的长列表中。我遇到的问题是第二种方法;更具体地说,让FlowLayoutPanel 在两种显示表单的方法之间切换。正如您所看到的,将WrapContents 设置为trueLayoutEngine 会创建列,但会将它们溢出到下一列。 (我从未尝试过解决此问题,在 FlowLayoutPanel 上设置 WrapContents 后,我仍然坚持如何重新应用布局)

所以我的问题是,有没有更好的解决方案来解决我的问题。

  • 是否有一个布局面板可以以上述两种方式显示我的控件?
  • 此外,是否可以根据用户请求在两者之间轻松切换(通过一个复选框/按钮来重绘/重新布局控件)?

【问题讨论】:

  • 你应该有另一个控件基本上结合Banner和它所有的Indicators,然后你可以把它们垂直(作为你的方法之一)或水平(作为你的方法二)
  • 我能否在运行时将面板中的布局从垂直切换到水平?
  • 这完全取决于您的代码,如果您有代码可以显示它们verticalhorizontal,那么您当然可以在运行时切换布局(通过重新应用您的代码。)
  • 所以Panel默认没有垂直和水平添加/布局控件的方法,我基本上必须写一个LayoutEngine来做到这一点? // 我想知道是否有一个布局面板已经可以默认我上面问的了?
  • 所有这些都是01 Indicator 0 控件吗?这是可怕且低效的。您必须将其重新设计为一种列表控件。你见过ListView 和群组吗? Example。如果这些是TextBox'es,那么也许你需要像PropertyGrid 这样的东西。

标签: c# winforms user-interface layout user-controls


【解决方案1】:

是否有可以以上述两种方式显示控件的布局面板?

FlowLayoutPanel 是您要查找的面板,您遇到的问题是因为您的bannerindicator 没有关联。所以FlowLayoutPanel 将它们中的每一个都视为一个单独的控件,因此您观察到了 溢出

正如我在 cmets 中指出的那样,您需要一个额外的用户控件来组合 Banner 和所有可能的 Indicators,并将这个新控件添加到 FlowLayoutPanel 中。

此外,是否可以根据用户请求在两者之间轻松切换(通过复选框/按钮重绘/重新布局控件)?

完成第一部分后,您可以通过将FlowLayoutPanelFlowDirection 设置为TopDownLeftToRight(将WrapContents 设置为False)来切换布局。

【讨论】:

  • // 旁注:很奇怪,更改FlowDirection 属性会重新布局控件,而更改WrapContents 属性不会(我最初问这个问题的原因)//我认为这对我有用,我想我将为每组横幅和指标设置一个FlowLayoutPanel,并将它们放入“主”“FlowLayoutPanel”中。 // 不过,这似乎效率低下吗?
  • 是的,这行得通。我的建议是通过将子FlowLayoutPanel 转移到新的UserControl 中来节省一些代码行。
  • 如果你有时间,这是我问的一个相关问题。 stackoverflow.com/questions/23616838/… 我很难让我的控件在孩子FlowLayoutPanels 中正确绘制。我不确定为什么我的修复使它们正确绘制,这就是问题所在。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-11-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-05-14
  • 2019-08-26
相关资源
最近更新 更多