2011-05-18 124 views
3

我已经开发了窗体表单应用程序,并且我的客户需要左侧的TreeView,并且点击时允许其用户在右侧的详细屏幕上工作。最简单的方法是创建禁用的面板,直到点击适当的节点。然而,这个应用程序正在不断增长,它的太多方式都是以主要形式生活的。TreeView详细体系结构问题

我想知道是否有可能每个节点都有一个窗体打开并展开到右侧的细节区域,然后在完成时关闭它。这样我就没有一个单一的整体形式,但我不知道如何去做。

任何人有任何洞察到如何做这样的事情?

谢谢。

回答

1

您应该尝试使用UserControl s。

基本上,每个UserControl是一个表格(或多或少),你可以添加到你的主窗体,就像你任何其他控件一样。

+0

谢谢你的建议。我在开始时就考虑过用户控件,但避开了它们,因为它似乎必须编写大量暴露数据,事件和方法的代码。但是,实际的形式与其自身之外的组件之间的交互很少。所以这似乎是现在走的一个好方法。一个问题,你如何管理尺寸?你会将用户控件放在面板中,然后将其设置为父容器中的doc? – MikeMalter 2011-05-19 16:43:47

+0

我有一个类似的设置为我正在处理的应用程序。我有一个splitcontainer左侧树视图,然后在右侧,我添加或删除usercontrol。我总是停靠它来填充,并在usercontrol中设置控件的锚点appropriatley – zsalzbank 2011-05-19 17:25:21

+0

锚定你的意思是什么?你能发布一个片段吗?谢谢。 – MikeMalter 2011-05-19 17:50:30

0

我会从Panel继承每个页面,将每个Panel派生对象的实例附加到每个TreeView节点的Tag属性,并在选择节点时显示该(Dock = Fill)。

+0

感谢您的回答,但是,我需要远离面板,因为面板的所有代码都以这种形式存在,我不想在一种形式中使用这么多的代码。许多应用程序将通过单击TreeView中的一个元素来驱动,该元素将在右侧的详细区域中显示一个UI。我需要将这些UI分解成不同形式的容器。 – MikeMalter 2011-05-19 16:38:30

+0

再次阅读我的答案 - 您需要创建从Panel继承的类,并使用表单中的类。 – Ryan 2011-05-19 17:59:35

+0

感谢您花时间回复我的评论。 – MikeMalter 2011-05-20 04:12:28

0

我最近也遇到过类似的情况,下面是我做的。它适用于我的情况。

  1. 添加了垂直分割的拆分容器。
  2. 添加了Dock = Fill的TreeView到分离容器的左侧面板。
  3. 在分离容器的右侧面板的详细信息屏幕上添加了所需的任何控件。
  4. 将数据绑定到TreeView时,可以将数据源对象分配给TreeNode的标签,也可以在所选节点更改事件上获取所需的详细信息。 (保留Tag属性中的详细信息可以快速更新细节视图,但它会影响...取决于数据的大小)。
  5. 根据所选树节点的属性更改右侧面板属性。

我不知道你要什么有正确的详细信息视图,以及为什么需要为每个树节点一个单独的面板,而不是改变右侧面板控制所选择的节点改变事件的性质。

+0

感谢您花时间回答。我真的需要找到面板的替代品,所以我不必在单一格式中包含这么多代码。 – MikeMalter 2011-05-19 16:39:28

0

您可以使用拆分控件并加载右侧的表单,但需要将其正确排列。正如@codethis提到的那样,usercontrol最好能够处理它们,因为它们的代码是分开编写的。只需要传递参数(从节点选择)。

根据您的屏幕更改,您可能需要多个用户控件并将它们放置在表单中。