2013-03-26 4 views
0

XML 파일에 데이터를 쓰거나 편집하거나 삭제할 수있는 XMLProfile 클래스가 있습니다. 이 데이터는 판독 및 표시 시각 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

죄송합니다. 제가 잘못 이해했을 수 있습니다. 저장이 성공적으로 이루어지면 Apply (적용) 단추가 더 많거나 적은 수표를 의미합니다. 그러나 이것은 취소 버튼에 더 많은 문제가 있음을 의미합니다. –

+0

취소 버튼 코드 – Shaharyar

+0

아니요, 적용 버튼을 사용 중지하고 저장 버튼 코드의 마지막 단계로 사용하도록 설정하십시오. – evgenyl

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 (객체 발신자, EventArgs e) { // XMLProfile xml = new XMLProfile(); //xml.save(); }' –

+0

Pls 내가 위의 대답에서 언급 한 접근법을 시도해보십시오. 작동해야합니다. –

+0

두 가지 클래스로, 어떻게해야할지 모르겠습니다 ... 'btnApply.Enabled = false;'가 오류를 표시합니다 (나를 위해 btnApply = button9) –

관련 문제