2010-12-07 5 views
1

私はWindowsアプリケーションでツリービューコントロールを使用します。このアプリケーションでは、いくつかのノードを追加するボタンがあります(ルートノード&子ノード)。今度は、この構造を保存して、アプリケーションを再び開いたときに使用します。ツリービューからノードを保存する

どうすればいいですか?

答えて

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-ツリーを再作成するときは、保存されたデータがデータベースにある場合はそれをデセル化し、実際のバイトとストロークを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ことができ、あなたはあなたの木を再構築することができます。