显示/隐藏详细信息 WinForm

3
我正在创建一个WinForm应用程序(.net3.5),其中我展示了一些客户详细信息。我的问题是,我们有一个与地址相关的方向字段。为了节省空间,我想在用户“希望”查看它们之前将方向隐藏起来。我的预期方法是使用类似“手风琴”的方式呈现方向。
我想我也可以用隐藏字段和BringToFront()(这样做会更好吗)来实现这一点。
有人能提供一些手风琴样式的指导吗?
是否已经存在类似的东西?
我需要考虑什么特别的事情吗?
在编写自己的行为时,我只需要将所有内容向下移动,然后再移回来等等吗?
谢谢!
4个回答

6
你所谈及的概念称为 渐进式披露。微软在用户体验指南中提供了一些关于这类控件的出色技巧。

4
当我需要这种行为时,我发现TableLayoutPanel很有用。如果持有可扩展内容,您可以将行和列设置为自动调整大小-这样,当隐藏内容时,行会折叠。
然后,如果您有另一个控件(例如按钮),您可以使用它来控制可扩展内容的隐藏状态。
例如,创建一个3行1列的表格。在顶部添加一个固定大小的按钮,在中间添加一个自动大小的元素。将最后一行设置为百分比大小(您需要这样做,以便当中间行大小为零时,还有东西占用剩余空间)。然后使用您的按钮来更改中间行中任何内容的可见属性。

我喜欢这种方法,但还有其他步骤吗?作为测试,我创建了一个3行2列的表格。将中间行设置为自动大小,并将其包含的项设置为Visible=false。它没有像我预期的那样折叠该行。谢谢! - Refracted Paladin
1
我已经更新了我的回复。重要的部分是将一行设置为百分比,以便它占用自动调整大小行的空间。此外,自动调整大小行中的所有内容都必须隐藏才能正常工作(除非另一列中的内容也被隐藏)。 - Jeff Yates
此外,在WinForms设计器中更改中间项的Visible属性不会显示任何更改 - 更改发生在运行时。 - Jeff Yates

2
我认为你会想要将相关的控件分组放在面板中,将它们与表单的顶部/底部对齐,然后在用户点击“More Detail >>”/“<< Less Detail”时,以编程方式显示/隐藏适当的面板。
编辑:我不知道是否有一个专门用于此功能的辅助控件,除了使用面板来对控件进行分组并一次性显示/隐藏它们。

1
如果控件是自由放置的,那么是的 - 你需要上下移动它们。你可以通过将相关控件分组封装到面板中来减少工作量:然后你只需要移动面板。如果面板被“停靠”(例如,“顶部”)- 那么只需隐藏/显示面板,一切都应该自动落入位。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接