// 再帰処理用 private void ExportRec(TreeNode nodeP, string pathP) { foreach (var nodeC in nodeP.Nodes) { // 親の名前でフォルダを作成 Directory.CreateDirectory(pathP); TreeNode child = (TreeNode)nodeC; // ルートノードの名前を取得 string nameC = child.Text; // ノードからメモオブジェクトを取得 var memoC = new Form1.Memo(); memoC = (Form1.Memo)child.Tag; // 出力先パスとルートノードの名前を結合 // フォルダパス末尾に"\"がある場合と無い場合に対処できる string mergePath = Path.Combine(pathP, nameC + @".txt"); // txtファイルにメモの内容を書き込む File.WriteAllText( mergePath, memoC.Text, Encoding.GetEncoding("shift_jis")); // パスを更新 string pathC = Path.Combine(pathP, nameC); // 再帰処理 ExportRec(child, pathC); } }
// 関数:ノードとメモを一括出力 private void ExportAllMemo() { // ルートノードのテキストファイルを作成 foreach (var node in nodes) { TreeNode nodeP = (TreeNode)node; // ルートノードの名前を取得 string name = nodeP.Text; // ノードからメモオブジェクトを取得 var memo = new Form1.Memo(); memo = (Form1.Memo)nodeP.Tag; // 出力先パスとルートノードの名前を結合 // フォルダパス末尾に"\"がある場合と無い場合に対処できる string mergePath = Path.Combine(this.textBoxExport.Text, name + @".txt"); // txtファイルにメモの内容を書き込む File.WriteAllText( mergePath, memo.Text, Encoding.GetEncoding("shift_jis")); // パスを格納する変数 string folderPath = Path.Combine(this.textBoxExport.Text, name); // 再帰処理 ExportRec(nodeP, folderPath); } ShowMsgExportDone(); }