現在 Visual C# で勉強中のものです。
Visual C#で、TreeViewを用いたメモ帳の作成をしています。
参考にしているメモ帳は Mac のメモです。
NewProject Project でディレクトリを作ります。
File でファイルを作ります。
ディレクトリもファイルも、作る際に、ノードを増やしてからそのまま保存という風にしたいので、以下のメソッドを作りました。
現在出来ているところは、ディレクトリの保存と、ファイルの保存です。
カレントディレクトリを string型 で作っているので、string WorkSpace を使って、Formの展開時に、相対パスの下にあるデータを呼び出し、二次元配列で適切な場所に配置し、メモをいつでも開いて編集。みたいなことをしたいと思っています。
ですが、理屈は大体わかるのですが、やり方がわかりません。
テキストファイルのデータなら、StreamReader とかを使うのですが、
TreeView の TreeNode に 自動的に Add したりするためには、どういうコードを描くのが良いのでしょうか。
以下のコードは保存の際に使うメソッドです。
コンテキストメニューには、
New Project //相対パス直下のセレクトできない場所に作るディレクトリ
Project //エクスプローラのように増やしていけるディレクトリ
File //txtファイル
の3つがあり、Make して Save するという流れで、そのまま保存できるようにしました。
C#
1 int pnum = 0; //無名projectの一時判別用 2 int fnum = 0; //無名fileの一時判別用 3 string CurrentDirectory = System.IO.Directory.GetCurrentDirectory(); 4 TreeNode ftn; 5 6 void MakeNewProject() 7 { 8 TreeNode tn = new TreeNode(); 9 if (tb.Text != "") 10 { 11 tn.Text = tb.Text; 12 } 13 else 14 { 15 pnum += 1; 16 tn.Text = "new project( " + pnum.ToString() + " )"; 17 } 18 tv.Nodes.Add(tn); 19 ftn = tn; 20 } 21 22 void SaveNewProject() 23 { 24 TreeNode tn = ftn; 25 string ProjectName = tn.Text; 26 string WorkSpace = CurrentDirectory + "../../../../memo/"; 27 System.IO.DirectoryInfo di = System.IO.Directory.CreateDirectory(WorkSpace + ProjectName); 28 } 29 30 void MakeProject() 31 { 32 TreeNode tn = new TreeNode(); 33 if (tb.Text != "") 34 { 35 tn.Text = tb.Text; 36 } 37 else 38 { 39 pnum += 1; 40 tn.Text = "new project( " + pnum.ToString() + " )"; 41 } 42 tv.SelectedNode.Nodes.Add(tn); 43 ftn = tn; 44 } 45 46 void SaveProject() 47 { 48 TreeNode tn = ftn; 49 string ProjectName = tn.Text; 50 string WorkSpace = CurrentDirectory + "../../../../memo/"; 51 tv.PathSeparator = "\"; 52 System.IO.DirectoryInfo di = System.IO.Directory.CreateDirectory(WorkSpace + tv.SelectedNode.FullPath + "\" + ProjectName); 53 } 54 55 void MakeFile() 56 { 57 TreeNode tn = new TreeNode(); 58 if(tb.Text != "") 59 { 60 tn.Text = tb.Text; 61 } 62 else 63 { 64 fnum += 1; 65 tn.Text = "new document( " + fnum.ToString() + " )"; 66 } 67 tv.SelectedNode.Nodes.Add(tn); 68 } 69 70 void SaveFIle() 71 { 72 TreeNode tn = ftn; 73 string FileName = tn.Text; 74 string WorkSpace = CurrentDirectory + "../../../../memo/"; 75 if(tv.SelectedNode != null) 76 { 77 tv.PathSeparator = "\"; 78 string FilePath = WorkSpace + tv.SelectedNode.FullPath + "\" + FileName + ".txt"; 79 using (System.IO.FileStream hStream = System.IO.File.Create(FilePath)) 80 { 81 if (hStream != null) 82 { 83 hStream.Close(); 84 } 85 } 86 87 System.IO.StreamWriter sw = new System.IO.StreamWriter( 88 FilePath, 89 false, 90 System.Text.Encoding.GetEncoding("shift_jis") 91 ); 92 sw.Write(rtb.Text); 93 sw.Close(); 94 } 95 else 96 { 97 98 } 99 }