../images/Emo3.gif ../images/Emo3.gif
אני מניח שהפורום הזה תומך בקוד פתוח..
טוב.. אני לא בטוח לאיזה חלק מהקוד התכוונת, אז א ני פשוט אשלח את הכל..
טוב, אז זה המחלקה עם הפונקציות לשמירת\טעינת העץ
using System; using System.Collections; using System.Windows.Forms; using System.IO; using System.Runtime.Serialization.Formatters.Binary; namespace Rush_Hour { public class LoadSaveTree { #region Save (saveTree, saveNode) /// <param name="tree"></param> /// <param name="filename"></param> public static int saveTree(TreeView tree, string filename) { ArrayList al = new ArrayList(); foreach (TreeNode tn in tree.Nodes) { saveNode(tn, al); } Stream file = File.Open(filename, FileMode.Create); BinaryFormatter bf = new BinaryFormatter(); try { bf.Serialize(file, al); } catch (System.Runtime.Serialization.SerializationException e) { MessageBox.Show("Serialization failed : {0}", e.Message); return -1; } file.Close(); return 0; } /// <param name="tn"></param> /// <param name="al"></param> private static void saveNode(TreeNode tn, ArrayList al) { Hashtable ht = new Hashtable(); ht.Add("Tag", tn.Tag); ht.Add("Text", (object)tn.Text); ht.Add("FullPath", (object)tn.FullPath); ht.Add("SelectedImageIndex", (object)tn.SelectedImageIndex); ht.Add("ImageIndex", (object)tn.ImageIndex); al.Add((object)ht); foreach (TreeNode n in tn.Nodes) { saveNode(n, al); } } #endregion #region Load (loadTree, searchNode) /// <param name="tree"></param> /// <param name="filename"></param> public static int loadTree(TreeView tree, string filename) { if (File.Exists(filename)) { Stream file = File.Open(filename, FileMode.Open); BinaryFormatter bf = new BinaryFormatter(); object obj = null; try { obj = bf.Deserialize(file); } catch (System.Runtime.Serialization.SerializationException e) { MessageBox.Show("De-Serialization failed : {0}", e.Message); return -1; } file.Close(); ArrayList alist = obj as ArrayList; foreach (object item in alist) { Hashtable ht = item as Hashtable; TreeNode tn = new TreeNode(ht["Text"].ToString()); tn.Tag = ht["Tag"]; &nbs