c#在SplitContainer中使用TreeView控件更改内容

c#在SplitContainer中使用TreeView控件更改内容,c#,winforms,treeview,splitcontainer,C#,Winforms,Treeview,Splitcontainer,我在SplitContainer的左侧有一个TreeView,我希望在单击树节点时更改右侧的内容。我尝试做的是设置一个“窗口”,比如Putty中的窗口,即右侧的te内容可能非常复杂 (来源:) 我的想法是为每个树节点的内容创建一个面板,将所有这些面板添加到右侧,并根据在树视图上的单击显示/隐藏它们 这是正确的方法吗?有更好的吗?将树节点与其面板(例如某种MVC)链接的最佳方式是什么 多谢各位 Tom您可以拥有多个面板,其中包含接受上下文对象以填充或保存相关设置的单个设计器 然后,在树状视图中,

我在
SplitContainer
的左侧有一个
TreeView
,我希望在单击树节点时更改右侧的内容。我尝试做的是设置一个“窗口”,比如Putty中的窗口,即右侧的te内容可能非常复杂


(来源:)

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

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

多谢各位


Tom

您可以拥有多个面板,其中包含接受上下文对象以填充或保存相关设置的单个设计器 然后,在树状视图中,可以使用每个节点的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;
}

我的博客文章,可能会给你一些提示。源代码是。到目前为止,在Winforms中实现这一点的最简单方法是使用TabControl,减去制表符: