2013-03-26 64 views
0

我有一个XMLProfile类,它具有将数据写入/编辑/删除到xml文件的方法。该数据被读出并显示在Visual C#列表视图应用/取消按钮事件逻辑

public void xmlwriter(string path) 
     { 
      XmlDocument xdoc = new XmlDocument();     
      xdoc.Load("C:\\product.txt); 
      XmlNode fold = xdoc.CreateElement("Folder"); 
      XmlNode name = xdoc.CreateElement("Name"); 
      XmlNode rec = xdoc.CreateElement("Recurse"); 
      name.InnerText = path; 
      rec.InnerText = "true"; 
      fold.AppendChild(name); 
      fold.AppendChild(rec); 
      xdoc.SelectSingleNode("//Folders").AppendChild(fold); 
      xdoc.Save("C:\\product.txt"); 
     } 

的写方法(添加新数据到XML)是上面所示和删除如下所示

public void delete(string snode) 
     { 
      XmlDocument xdoc = new XmlDocument(); 
      xdoc.Load("C:\\product.txt"); 
      foreach (XmlNode node in xdoc.SelectNodes("BackupProfile/Folders/Folder")) 
      { 
       string temp = node.SelectSingleNode("Name").InnerText; 
       if (temp == snode) 
       { 
        node.ParentNode.RemoveChild(node); 
       } 
      } 
      xdoc.Save("C:\\product.txt"); 
     } 

类似地编辑和复位方法。

弗洛姆我的主要节目形式叫我用一个按钮,这些方法点击

private void button8_Click(object sender, EventArgs e) 
     { 
      this.folderBrowserDialog1.ShowNewFolderButton = false; 
      this.folderBrowserDialog1.RootFolder = System.Environment.SpecialFolder.MyComputer; 
      DialogResult result = this.folderBrowserDialog1.ShowDialog(); 
      if (result == DialogResult.OK) 
      { 
       // user selected folder will be added to the XML Profile for backup 
       string path = this.folderBrowserDialog1.SelectedPath; 
       XMLProfile xml = new XMLProfile(); 
       xml.xmlwriter(path); 
       listView1.Items.Add(path); 
      } 
     } 

上述方法是添加新的数据调用从XMLProfile类XmlWriter的方法。

这一切工作正常,但现在我意识到只有在修改完成并保存之前有一个“应用”按钮才是正确的。

我该如何实施?我用这个链接StackOverflow,但它不适用于我实际上不知道如何在我的项目中实现。随着应用按钮,我有一个取消按钮。 取消:显而易见不应保存更改,只需重新加载xml文件即可返回到以前保存的版本。

任何帮助表示赞赏,如果需要任何进一步的信息,请不要问。谢谢。

回答

0

您可以设置应用按钮被禁用,只有在成功后能保存

+0

对不起,我可能会明白这是错误的。你的意思是应用按钮或多或少地检查保存是否成功。但是这意味着取消按钮会有更多的麻烦。 – 2013-03-26 11:16:55

+0

向我们显示您的取消按钮代码 – Shaharyar 2013-03-26 11:22:49

+0

不,我的意思是禁用应用按钮,并启用它作为保存按钮代码中的最后一步 – evgenyl 2013-03-26 12:04:41

0

难道你还粘贴ApplyButtonClick事件处理这里更精确的答案? 但我猜你需要的是这样的

public void OnApplyButtonClick(object sender, EvenArgs e) 
{ 
this.ApplyBtn.Enabled = false; 
//Your logic Here 
} 


public void xmlwriter(string path) 
     { 
btnApply.Enabled = false; 
      XmlDocument xdoc = new XmlDocument();     
      xdoc.Load("C:\\product.txt); 
      XmlNode fold = xdoc.CreateElement("Folder"); 
      XmlNode name = xdoc.CreateElement("Name"); 
      XmlNode rec = xdoc.CreateElement("Recurse"); 
      name.InnerText = path; 
      rec.InnerText = "true"; 
      fold.AppendChild(name); 
      fold.AppendChild(rec); 
      xdoc.SelectSingleNode("//Folders").AppendChild(fold); 
      xdoc.Save("C:\\product.txt"); 
btnApply.Enabled = true; 
     } 

public void DeleteNode(string snode) 
     { 
this.ApplyBtn.Enabled = false; 
      XmlDocument xdoc = new XmlDocument(); 
      xdoc.Load("C:\\product.txt"); 
      foreach (XmlNode node in xdoc.SelectNodes("BackupProfile/Folders/Folder")) 
      { 
       string temp = node.SelectSingleNode("Name").InnerText; 
       if (temp == snode) 
       { 
        node.ParentNode.RemoveChild(node); 
       } 
      } 
      xdoc.Save("C:\\product.txt"); 
this.ApplyBtn.Enabled = true; 
    } 
+0

其实我还没有定义任何与应用按钮事件。 'private void button9_Click(object sender,EventArgs e) { // XMLProfile xml = new XMLProfile(); //xml.save(); }' – 2013-03-26 14:42:20

+0

请尝试我在上面的答案中提到的方法,它应该工作 – 2013-03-26 14:44:38

+0

它们是2个不同的类,我不知道该怎么做......作为'btnApply.Enabled = false;'显示错误对我来说btnApply = button9) – 2013-03-26 14:46:24