2010-03-12 4 views
4

테이블의 각 파일에 대한 파일 경로가 포함 된 데이터베이스 테이블의 열이 있습니다. C#에서 트리 뷰를 만들면 데이터베이스의 파일 경로 열을 모방합니다. 여기데이터베이스 열의 파일 경로에서 트리 뷰를 만드는 방법

은 샘플 파일 경로 열이 열의 모습입니다 :

jsmith/project1/hello.cs 
jsmith/project1/what.cs 
jwilliams/project2/hello.cs 
+0

Form1에에서

public static class MyDataBase { private static List<string> fields = new List<string>(); public static void AddField(string field) { fields.Add(field); } public static IList<string> FieldsInMyColumn() { return fields; } } 

생성자는 트리보기가 같이 방법을 추가하시기 바랍니다 수 있습니다. – AxelEckenberger

+0

왜 downvote? 나는 그것의 나쁜 질문을 생각하지 않는다 ... 제출자는 트리 뷰가 어떻게 보일 것인가를 제공하지 않았다. 왜냐하면 상당히 명백해야하기 때문이다. :) – Polaris878

+0

Javier Morillo가 아래 답변에서했던 것처럼, 열의 "원시 데이터"를 목록 으로 액세스 할 수 있습니다. 그렇지 않은 경우 "원시 데이터"는 어떤 형식입니까? 귀하의 예제에서 "원시 데이터"가 알파 정렬되어 있다고 가정 할 수 있습니까? 마지막으로, 파일 경로의 "깊이"가 임의로 깊다고 가정 할 수 있습니까? 예에서와 같이 각 파일 경로의 깊이는 # 3으로 고정되어 있습니까? – BillW

답변

1

좀 예를했습니다. 나는 그것을 테스트하고 잘 작동합니다.

나는 데이터베이스 시뮬레이션 클래스 MYDATABASE을했습니다 참고 것을 : 당신이 필요하지는 것으로, 여기

내가 내 auxiliar 코드를 붙여

public void CreateTreeView() 
{ 
    TreeView myTreeview = new TreeView(); 
    myTreeview.Dock = DockStyle.Fill; 
    this.Controls.Add(myTreeview); 

    foreach (string field in MyDataBase.FieldsInMyColumn()) 
    { 
     string[] elements = field.Split('/'); 
     TreeNode parentNode = null; 

     for (int i = 0; i < elements.Length - 1; ++i) 
     {           
      if (parentNode == null) 
      { 
       bool exits = false; 
       foreach (TreeNode node in myTreeview.Nodes) 
       { 
        if (node.Text == elements[i]) 
        { 
         exits = true; 
         parentNode = node; 
        } 
       } 

       if (!exits) 
       { 
        TreeNode childNode = new TreeNode(elements[i]); 
        myTreeview.Nodes.Add(childNode); 
        parentNode = childNode; 
       } 
      } 
      else 
      { 
       bool exits = false; 
       foreach (TreeNode node in parentNode.Nodes) 
       { 
        if (node.Text == elements[i]) 
        { 
         exits = true; 
         parentNode = node; 
        } 
       } 

       if (!exits) 
       { 
        TreeNode childNode = new TreeNode(elements[i]); 
        parentNode.Nodes.Add(childNode); 
        parentNode = childNode; 
       } 
      } 
     } 

     if (parentNode != null) 
     { 
      parentNode.Nodes.Add(elements[elements.Length - 1]); 
     } 
    }   
} 

편집하지만, 내 코드를 이해하거나 직접 복사/붙여 넣기를 시도 할 수 있습니다.

public Form1() 
{ 

    InitializeComponent(); 

    MyDataBase.AddField("jsmith/project1/hello.cs"); 
    MyDataBase.AddField("jsmith/project1/what.cs"); 
    MyDataBase.AddField("jsmith/project2/hello.cs"); 

    CreateTreeView(); 
} 
+0

감사합니다. Javier ... 이걸 시도해보고 작동하는지 알려 드리겠습니다. – DrybLrac

+0

매력처럼 작동했습니다 !!!! 감사합니다 Javier !!! 소품!!! – DrybLrac

+0

:-) 멋지다. 당신은 환영합니다, 고마워요! – Javier

관련 문제