2

我在 aTreeView的左侧有 a SplitContainer,我希望在单击 TreeNode 时更改右侧的内容。我正在尝试做的是一个设置“窗口”,例如 Putty 中的设置“窗口”,即右侧的内容可能非常复杂。

油灰
(来源:unixwiz.net

我的想法是为每个树节点设置一个内容面板,将所有这些面板添加到右侧,并根据树视图上的点击显示/隐藏它们。

这是正确的方法吗?有更好的吗?将树节点与其面板链接的最佳方式是什么,例如某种 MVC?

谢谢你

汤姆

4

1 回答 1

3

您可以拥有多个面板,其中各个设计师接受上下文对象来填充或保存相关设置然后在 TreeView 中,您可以使用每个节点的 Tag 属性来维护相关面板,并在选择它时在右侧面板中显示面板。

这是一些代码:

interface ISettingPanel
{
SettingContext Context{get;set;}
}

public BasicSettingPanel:Panel,ISettingPanel
{
....
}

public void InitTreeView
{
var node=new TreeNode();
node.Tage=new BasicSettingPanel();// or you can set the type to create the panel later
treeView.Nodes.Add(node);
}

public void AfterNodeSelected()
{
_currentPanel=null;
var selectedNode=treeView.SelectedNode;
var panel=selectedNode.Tag as Panel;
if(panel!=null)
_currentPanel=panel;
(_currentPanel as ISettingPanel).Context=this.Context;
}
于 2012-02-18T14:07:16.207 回答