mam TreeView
po lewej stronie SplitContainer
i chciałbym, aby treść po prawej stroniezmienić po kliknięciu na TreeNode. Co próbuję zrobić, to okno "ustawień", takie jak w Putty, tj. Zawartość po prawej stronie może być dość skomplikowana.
Putty http://unixwiz.net/images/putty-openssh-3.gif
Pomysł polega na tym, aby panel dla zawartości dla każdego węzła drzewa, dodać wszystkie panele po prawej stronie i pokazać / ukryć je na podstawie kliknięć w widoku drzewa.
Czy to właściwe podejście? Czy jest lepszy? Jaki jest najlepszy sposób połączenia węzłów drzewa z ich panelami, np. Pewnego rodzaju MVC?
Dziękuję Ci
Tomek
Odpowiedzi:
3 dla odpowiedzi № 1Możesz mieć wiele paneli z indywidualnymiprojektanci, którzy akceptują obiekt kontekstu w celu wypełnienia lub zapisania powiązanych ustawień Następnie w swoim TreeView możesz użyć właściwości Tag każdego węzła, aby zachować odpowiedni panel, a po wybraniu pokazać panel w prawym panelu.
Oto kod:
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;
}