2012-02-18 16 views
2

SplitContainerの左側にTreeViewがあります。ツリーノードをクリックすると、右側のコンテンツが変更されます。私がしようとしているのは、パテのような設定「ウィンドウ」です。つまり、右側のコンテンツはかなり複雑です。c#SplitContainerのTreeViewコントロールを使用してコンテンツを変更する

Putty http://unixwiz.net/images/putty-openssh-3.gif

私が持っているアイデアは、各ツリーノードのコンテンツのためのパネルを持って右側にすべてのそれらのパネルを追加し、ツリービューのクリックに基づいてそれらを隠す/表示することです。

これは正しいアプローチですか?良いものはありますか?どのような種類のMVCなど、ツリーノードをパネルにリンクするための最良の方法はありますか?

はあなたがあなたのツリービューであなたは、各ノードのTagプロパティを使用することができます関連の設定 を埋めるか、保存するためにコンテキストオブジェクトを受け入れ、個々のデザイナーとの複数のパネルを持つことができます

トム

+0

Winformsの中でこれを実装する最も簡単な方法のTabControlであり、マイナスのタブ:ここで

は、いくつかのコードだhttp://stackoverflow.com/questions/2340566/creating-wizards-for -windows-forms-in-c-sharp/2342320#2342320 –

+0

ブログの投稿、[ページオプションダイアログの実装](http://www.differentpla.net/content/2004/10/implementing-a-paged-options) -dialog)は、いくつかのヒントを与えるかもしれません。ソースコードは[on github](https://github.com/rlipscombe/paged-options-dialog)です。 –

答えて

2

をありがとう関連するパネルを維持し、選択されているときは右側のパネルにパネルを表示します。断然

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; 
} 
+0

甘い、ありがとう – scibuff

+0

あなたは歓迎です:) – Beatles1692

関連する問題