TreeView细节建筑学问题

时间:2011-05-18 23:53:27

标签: c# winforms architecture treeview master-detail

我有正在开发的Windows窗体应用程序,我的客户端想要一个左侧的TreeView,其中点击的节点允许用户在右侧的详细屏幕中工作。最简单的方法是创建禁用的面板,直到单击适当的节点。然而,这个应用程序正在增长,并且太多的生活方式都是主要形式。

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

有人对如何做到这一点有任何见解吗?

感谢。

4 个答案:

答案 0 :(得分:1)

您应该尝试使用UserControl s。

基本上,每个UserControl都是一个表单(或多或少),您可以像添加其他控件一样添加到主表单中。

答案 1 :(得分:0)

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

答案 2 :(得分:0)

我最近也遇到了类似的案例,而我的所作所为也是如此。它适用于我的情况。

  1. 添加了垂直分割的拆分容器。
  2. 添加了一个带有Dock = Fill的TreeView到分割容器的左侧面板。
  3. 在拆分容器的右侧面板上的详细信息屏幕中添加了所需的控件。
  4. 将数据绑定到TreeView时,您可以将数据源对象正确分配给TreeNode的Tag,也可以获取有关所选节点更改事件的所需详细信息。 (保留Tag属性中的详细信息可以快速更新详细信息视图,但它会有所妥协......取决于数据的大小)。
  5. 根据所选树节点的属性更改右侧面板属性。
  6. 我不确定您将在正确的详细信息视图中拥有什么以及为什么需要为每个treenode创建单独的面板,而不是更改所选节点更改事件的右侧面板控件属性。

答案 3 :(得分:0)

您可以使用拆分控件并在右侧加载表单,但需要正确排列。正如@codethis所提到的,usercontrol最适合处理它们,因为它们的代码是单独编写的。只需要传递参数(来自节点选择)。

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