0

データをxmlファイルに書き込み/編集/削除するメソッドを持つクラス XMLProfile があります。このデータは読み取られ、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");
        }

同様に、Edit メソッドと Reset メソッド。

私のメインプログラムフォームから、ボタンクリックを使用してこれらのメソッドを呼び出します

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 ファイルをリロードするだけであるべきです。

さらに情報が必要な場合は、お問い合わせください。ありがとうございました。

4

2 に答える 2

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;
    }
于 2013-03-26T14:33:11.650 に答える
0

[適用] ボタンを無効に設定し、保存に成功した後にのみ有効にすることができます

于 2013-03-26T11:14:06.387 に答える