2012-02-18 2 views
2

SplitContainer 왼쪽에 TreeView이 있는데, TreeNode를 클릭하면 오른쪽의 내용이 변경되기를 바랍니다. 내가하려는 것은 Putty에있는 것과 같은 설정 "창"입니다. 즉 오른쪽의 te 콘텐츠는 상당히 복잡 할 수 있습니다.C# SplitContainer의 TreeView 컨트롤을 사용하여 내용을 변경하십시오.

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

내가 가진 아이디어는, 각 트리 노드 콘텐츠에 대한 패널이 오른쪽과 쇼에 모든 패널을 추가/트리보기에 클릭에 기반을 숨기는 것입니다.

이 방법이 맞습니까? 더 좋은가요? 어떤 종류의 MVC와 같이 패널과 트리 노드를 연결하는 가장 좋은 방법은 무엇입니까?

당신에게

톰 감사

+0

윈폼에서이를 구현하는 가장 간단한 방법을 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