【发布时间】:2014-06-29 22:06:50
【问题描述】:
目前我正在使用FlowLayoutPanel 来显示我的自定义控件,到目前为止它运行良好,但是当我想根据用户请求更改控件的布局时,它似乎缺少。我一直在尝试找到一种方法来更改FlowLayoutPanel 的WrapContents 属性,以使用新属性重新应用面板的布局,但仍然不足。
所以我想知道是否有完全不同的解决方案。
我想向用户显示两种类型的控件,横幅和指示器。每个横幅都有 24-48 个指示器(它们代表电气板)。我想以两种方式向用户显示这些控件。在一个长列表中的第一个(FlowLayoutPanel 与 WrapContents = false 做得很好)和列表列中的第二个,每个横幅一个(因此每列将由一个横幅开头,其下方的指示器。)
下面是FlowLayoutPanel 在这项任务中的表现。对于一个长列表的第一种方法,它很简单,只需设置WrapContents = false,所有内容都会排列在一个漂亮的长列表中。我遇到的问题是第二种方法;更具体地说,让FlowLayoutPanel 在两种显示表单的方法之间切换。正如您所看到的,将WrapContents 设置为true,LayoutEngine 会创建列,但会将它们溢出到下一列。 (我从未尝试过解决此问题,在 FlowLayoutPanel 上设置 WrapContents 后,我仍然坚持如何重新应用布局)
所以我的问题是,有没有更好的解决方案来解决我的问题。
- 是否有一个布局面板可以以上述两种方式显示我的控件?
- 此外,是否可以根据用户请求在两者之间轻松切换(通过一个复选框/按钮来重绘/重新布局控件)?
【问题讨论】:
-
你应该有另一个控件基本上结合
Banner和它所有的Indicators,然后你可以把它们垂直(作为你的方法之一)或水平(作为你的方法二) -
我能否在运行时将面板中的布局从垂直切换到水平?
-
这完全取决于您的代码,如果您有代码可以显示它们
vertical和horizontal,那么您当然可以在运行时切换布局(通过重新应用您的代码。) -
所以
Panel默认没有垂直和水平添加/布局控件的方法,我基本上必须写一个LayoutEngine来做到这一点? // 我想知道是否有一个布局面板已经可以默认我上面问的了? -
所有这些都是
01Indicator 0控件吗?这是可怕且低效的。您必须将其重新设计为一种列表控件。你见过ListView和群组吗? Example。如果这些是TextBox'es,那么也许你需要像PropertyGrid这样的东西。
标签: c# winforms user-interface layout user-controls