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 に答える