2012-06-11 3 views
1

아래 코드는 사용자 정의 컨트롤에서 트리 뷰의 xml 파일을로드하는 데 사용됩니다. 어떻게 든 확장/닫기 코드가 잘 코딩 된 것 같아요. 더 깨끗한 형태로 이것을 코딩하는 다른 방법이 있습니까? 이 같은사용자 컨트롤 트리 확장/닫기

try{ 
    this.tvTraceSelect.Progress = true; 
    this.tvTraceSelect.UnitsPath = unitsPath; 
    this.tvTraceSelect.TracesPath = tracesPath; 
    this.tvTraceSelect.View = Traces.View.Files; 
    this.tvTraceSelect.TreeView.CollapseAll(); 
    if (this.tvTraceSelect.TreeView.Nodes.Count > 0) 
    { 
     this.tvTraceSelect.TreeView.Nodes[0].Expand(); 
     if (this.tvTraceSelect.TreeView.Nodes[0].Nodes.Count > 0) 
     { 
      this.tvTraceSelect.TreeView.Nodes[0].Nodes[0].Expand(); 
      if (this.tvTraceSelect.TreeView.Nodes[0].Nodes[0].Nodes.Count > 0) 
      { 
       this.tvTraceSelect.TreeView.Nodes[0].Nodes[0].Nodes[0].Expand(); 
       if (this.tvTraceSelect.TreeView.Nodes[0].Nodes[0].Nodes[0].Nodes.Count > 0) 
       { 
        this.tvTraceSelect.TreeView.Nodes[0].Nodes[0].Nodes[0].Nodes[0].Expand(); 
       } 
      } 
     } 
    } 
}catch (Exception _excep) 
{ 
    MessageBox.Show(this, "An error occured during the initialization of the InitTracesView .\nDetails: " 
      + _excep.Message + "\n\n" + _excep.StackTrace, "Initialization error", MessageBoxButtons.OK, MessageBoxIcon.Error); 
} 
+0

당신이 재귀를 사용하여 생각 해 봤나? –

+0

@Charlie Kilian : 해결책을 제안 해 주시겠습니까? – linguini

+1

먼저 물어 보겠습니다. 무엇을 성취하려고합니까? 트리의 모든 노드를 확장하려는 것 같습니다. 너가 원하는게 그거야? –

답변

1
public void ExpandFirst(TreeNodeCollection nodes) 
{ 
    if (nodes.Count > 0) 
    { 
     nodes[0].Expand(); 
     ExpandFirst(nodes[0].Nodes); 
    } 
} 

전화를 :

ExpandFirst(this.tvTraceSelect.TreeView.Nodes) 
+0

: 선택 과정에서 코드를 단순화하고 싶습니다. 잘 작동하기 때문에. – linguini

+0

: 내가로드 할 때 코드가 확장되어 모든 트리가 확장됩니다. 사용자가 자동 ​​확장을 보는 것은 좋지 않습니다. – linguini

+0

각 레벨의 첫 번째 하위 노드 만 보길 원하십니까? –

관련 문제