ノードが含まれてTreeView
おり、そのうちの1つをクリックすると、ファイルや塗りつぶしTextBoxes
などからデータがロードされます。重複が作成されないようにしたいので、textBoxの「タイトル」に.xmlファイルに既に存在するエントリが含まれるたびに、削除されます. 私の問題は、エントリを追加するボタンを最初にクリックした後、すべて問題ないことです。しかし、2回目のクリック(textBox.Text
値は変更されていないため、複製されます)の後、変更してもノードが消えます。ダブルクリックするたびに、treeView の新しい子ノードが追加されます。自分でやろうとしましたが、アイデアが尽きてしまいました。
ボタンコード:
private void button1_Click(object sender, EventArgs e)
{
XDocument doc = XDocument.Load("test.xml");
bool ifDuplicate = doc.Descendants("dog")
.Any(x => (string)x.Attribute("name") == textBox1.Text);
if (ifDuplicate == true)
{
var xElement = (from q in doc.Elements("dogs").Elements("dog")
where q.Attribute("name").Value == textBox1.Text
select q);
foreach (var a in xElement)
a.Remove();
doc.Save("test.xml");
return;
}
gender(); //determines in which root node this entry will appear as child node; just comboBox with few exceptions
TreeViewOperations.SaveTree(treeView1, "test2.xml"); //saving treeView1
Save("test.xml"); //saving file that contains data form textBoxes etc.
statusBarUpdate();
}
私の質問は、既存のノードを変更して重複を削除するより良い方法はありますか? 必要に応じて Load メソッドをアタッチすることもできます。
編集:保存方法
private void Save(string filename) { XDocument database = XDocument.Load(filename); XElement dog = new XElement("dog"); database.Element("dogs").Add(dog); dog.Add(new XAttribute("name", textBox1.Text)); dog.Add(new XElement("breed", comboBox3.Text)); dog.Add(new XElement("sex", radioButton3.Checked)); database.Save(filename); }