2010-12-07 2 views
1

내 Windows 응용 프로그램에서 treeview 컨트롤을 사용합니다. 이 응용 프로그램에는 여러 노드를 추가하는 단추가 있습니다 (루트 노드 & 자식 노드). 이제이 구조를 저장하고 응용 프로그램을 다시 열 때 사용하고 싶습니다.트리보기에서 노드 저장

어떻게하면됩니까?

답변

0

당신은 당신이 중 하나를 저장할 수 있습니다, 당신은 바이트 배열을 가지고 일단 출발점으로 된 BinaryFormatter를 사용하여 트리 structor이

private Byte[] SerilizeQueryFilters() 
    { 
     BinaryFormatter bf = new BinaryFormatter(); 

     TreeNodeCollection tnc = treeView1.Nodes; 

     List<TreeNode> list = new List<TreeNode>(); 
     list.Add(treeView1.Nodes[0]); 


     using (MemoryStream ms = new MemoryStream()) 
     { 
      bf.Serialize(ms, list); 
      return ms.GetBuffer(); 

     } 


    } 

2 아래 참조 일

1 Serilize

다음을 수행 할 필요가 데이터베이스 또는 파일로.

3- 트리를 다시 만들려면 데이터가 데이터베이스에있는 경우 저장된 데이터를 deserilize해야하며, 실제 바이트 및 스트로크를 byte [] 배열로 읽거나 파일로드에있는 경우 파일을 읽고 모든 바이트를 바이트 배열로 읽습니다. 당신이 실제 바이트를 얻을 때

4, 당신은 코드

여기
private void DeSerilizeQueryFilters(byte[] items) 
    { 
     BinaryFormatter bf = new BinaryFormatter(); 

     List<TreeNode> _list = new List<TreeNode>(); 

     try 
     { 
      using (MemoryStream ms = new MemoryStream()) 
      { 
       ms.Write(items, 0, items.Length); 
       ms.Position = 0; 

       _list = bf.Deserialize(ms) as List<TreeNode>; 



      } 


     } 
     catch (Exception ex) 
     { 
     } 




    } 

이전에, 이제 데이터를 가지고 serilized 된 실제 루트 노드를 포함 할 _list을 볼 수 있습니다 아래에 따라 deserielize 수 있습니다, 당신은 당신의 나무를 재구성 할 수 있습니다.

관련 문제