public static void CreateBookTree(TreeView tree) { XDocument xDoc = FileOPs.LoadXmlFile(form_Catalog.bookFileName); tree.Nodes.Clear(); tree.Nodes.Add(new TreeNode(xDoc.Root.Name.ToString())); List <Book> parse = FileOPs.ParseBookXmlToList(form_Catalog.bookFileName); List <Book> noDupesAuthor = parse.GroupBy(a => a.bookAuthor).Select(grp => grp.FirstOrDefault()).OrderBy(a => a.bookAuthor).ToList(); foreach (Book nDA in noDupesAuthor) { tree.Nodes[0].Nodes.Add(nDA.bookAuthor); List <Book> bookSeries = parse.FindAll(x => x.bookAuthor.Equals(nDA.bookAuthor)).GroupBy(s => s.bookSeries).Select(grp => grp.FirstOrDefault()).OrderBy(s => s.bookSeries).ToList(); foreach (var bs in bookSeries) { tree.Nodes[0].Nodes[noDupesAuthor.IndexOf(nDA)].Nodes.Add(bs.bookSeries); List <Book> bookTitle = parse.FindAll(x => x.bookAuthor.Equals(nDA.bookAuthor) && x.bookSeries.Equals(bs.bookSeries)); foreach (var bn in bookTitle) { tree.Nodes[0].Nodes[noDupesAuthor.IndexOf(nDA)].Nodes[bookSeries.IndexOf(bs)].Nodes.Add(bn.bookTitle); } } } tree.ExpandAll(); FileOPs.SetBookLastID(); }
private void Catalog_Load(object sender, EventArgs e) { timer_Preview.Stop(); FileOPs.SetBookLastID(); FileOPs.SetFilmLastID(); if (tc_Info.SelectedTab == tabPage_Book) { grpbox_BookInfo.Hide(); TreeViewOPs.CreateBookTree(tw_Book); } if (tc_Info.SelectedTab == tabPage_Film) { grpbox_FilmInfo.Hide(); TreeViewOPs.CreateFilmTree(tw_Film); } }
private void OnChanged(object source, FileSystemEventArgs e) { Thread.Sleep(10); Invoke((MethodInvoker) delegate { if (tc_Info.SelectedTab == tabPage_Book) { TreeViewOPs.CreateBookTree(tw_Book); } if (tc_Info.SelectedTab == tabPage_Film) { TreeViewOPs.CreateBookTree(tw_Film); } }); FileOPs.SetBookLastID(); FileOPs.SetFilmLastID(); }