最近因為程式的需要,必須提供一個功能給使用者 就是能讓他們自己建立TreeNode 這個部分相當簡單。。 只要去指定每個TreeNode的ContextMenuStrip屬性
1: TreeNode tnAdd = new TreeNode(NodeName);
2: tnAdd.ContextMenuStrip = contextMenuStrip1;
只是使用者還需要一個功能 就是能將所建立的Tree整個備份下來 當然,我直覺想到的是XML格式 因為除了要儲存每個Node名稱外 也需要儲存相關Node的資訊(像是Folder資訊、Document資訊) 在這裡我使用兩個主要的方式
1.Recursion(遞迴)
2.XmlTextWriter物件
使用Recursion是因為我並不清楚 底下會長出多少個Node,也就是我不清楚要用多少個迴圈 來找出所有的Node,利用Recursion 可以讓我不需要知道,也可以一層一層找下去 在寫Xml檔案時,我使用XmlTextWriter物件
1: string strFolder = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);
2: strFolder=string.Format(@"{0}\{1}",strFolder,"DDA.xml");
3: //---Xml write----
4: using (XmlTextWriter xtw = new XmlTextWriter(strFolder, Encoding.UTF8))
5: {
6: xtw.Formatting = Formatting.Indented;
7: xtw.WriteStartDocument();
8: xtw.WriteStartElement("List");
9: WriteElement(xtw, tvList.Nodes);
10: xtw.WriteEndDocument();
11: }
12:
13: //---Recursion----
14: private void WriteElement(XmlTextWriter xtwThis, TreeNodeCollection tnCurrentNodes)
15: {
16: foreach (TreeNode thisNode in tnCurrentNodes)
17: {
18: xtwThis.WriteStartElement(thisNode.Text);
19: if (thisNode.Nodes.Count>0)
20: {
21: WriteElement(xtwThis, thisNode.Nodes);
22: }
23: xtwThis.WriteEndElement();
24: }
25: }
26:
簡單寫下這些紀錄,可以供以後做參考用 在寫這支程式時,遇到一個小問題 就是我嘗試要在XML的主目錄下,建立多個Element 這會產生錯誤,在主目錄中只能增加一個Element 不曉得是不是這樣,先記錄下來。
參考資料
1.http://chrisbalboa.wordpress.com/2007/10/02/aspnetxmltextwriter-demo-%E7%AF%84%E4%BE%8B/
2.http://www.builder.com.cn/2007/0924/521705.shtml
3.http://www.cnblogs.com/chen79/archive/2008/01/05/1027064.html
沒有留言:
張貼留言