/// <summary> /// 增加树节点 /// </summary> private void AddNode() { if (tvQQQustion.SelectedNode.Level ==2) return; var element = tvQQQustion.SelectedNode.Tag as XElement; if (element == null) return; var frm = new FormQuestionInfo(); if (DialogResult.OK != frm.ShowDialog()) return; if (tvQQQustion.SelectedNode.Level == 0) //新增date节点 { //1xml文档中加入节点 tvQQQustion.SelectedNode.Level ==0 var newElement = new XElement("Date", new XAttribute("id", DateTime.Now.ToString("yyyyMMdd")), new XElement("Q", new XAttribute("isOk", frm.IsOk), new XElement("title", frm.Title), new XElement("desc", frm.Content ) ) ); element.Add(newElement); //2增加树节点 var dateNode = new TreeNode(newElement.FirstAttribute.Value) { Tag = newElement }; tvQQQustion.SelectedNode.Nodes.Add(dateNode); var qElement = newElement.Element("Q"); var qNode = new TreeNode(qElement.Descendants("title").First().Value) { Tag = qElement }; dateNode.Nodes.Add(qNode); qNode.BackColor = Convert.ToBoolean(frm.IsOk) ? Color.Green : Color.White; //3选中新节点 tvQQQustion.SelectedNode = qNode; } else if(tvQQQustion.SelectedNode.Level ==1) //新增问题节点 { //1xml文档中加入节点 var newElement = new XElement("Q", new XAttribute("isOk", frm.IsOk), new XElement("title", frm.Title), new XElement("desc", frm.Content ) ); element.Add(newElement); //2增加树节点 var qNode = new TreeNode(newElement.Descendants("title").First().Value) { Tag = newElement }; tvQQQustion.SelectedNode.Nodes.Add(qNode); qNode.BackColor = Convert.ToBoolean(frm.IsOk) ? Color.Green : Color.White; //3选中新节点 tvQQQustion.SelectedNode = qNode; } }
/// <summary> /// 修改树节点 /// </summary> private void ModifyNode() { if (tvQQQustion.SelectedNode.Level != 2) return; //1更新内存的Xdocment的对应的元素节点 XElement qElement = tvQQQustion.SelectedNode.Tag as XElement; if (qElement == null || !qElement.Name.ToString().Equals("Q")) return; var frm = new FormQuestionInfo(tbTitle.Text, tbContent.Text, rbIsSolve.Checked); if (DialogResult.OK != frm.ShowDialog()) return; qElement.FirstAttribute.Value = frm.IsOk; var titleElement = qElement.Element("title"); if (titleElement != null) titleElement.Value = frm.Title; var descElement = qElement.Element("desc"); if (descElement != null) descElement.Value = frm.Content; //2更新节点的数据 tvQQQustion.SelectedNode.BackColor =Convert.ToBoolean(frm.IsOk) ? Color.Green : Color.White; //3节点显示的数据更新 tbTitle.Text = frm.Title; tbContent.Text = frm.Content; rbIsSolve.Checked = Convert.ToBoolean(frm.IsOk); }