C# XML file already in use. Why? [duplicate]




This question already has an answer here:




Hello i am keep getting error after i run my program a window pop up and says the xml file (witch i created) is already in use and cant be accessed. I am creating Xml files for very first time and i think i am missing something but cant really find what. Can you help me ?



using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Xml;

namespace phonebookFinal
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
List<Person> people = new List<Person>();
private void Form1_Load(object sender, EventArgs e)
{
string path = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData);
if (!Directory.Exists(path + "\\PhoneBook "))
Directory.CreateDirectory(path + "\\PhoneBook ");
if (!Directory.Exists(path + "\\PhoneBook \\settings.xml"))
{
File.Create(path + "\\PhoneBook \\settings.xml");
XmlTextWriter xW = new XmlTextWriter(path + "\\PhoneBook \\settings.xml", Encoding.UTF8);
xW.WriteStartElement("people");
xW.WriteEndElement();

}
}

class Person
{
public string Name { get; set; }
public string Email { get; set; }
public string PhoneNumber { get; set; }
public string MoreInformation { get; set; }
public DateTime BirthDay { get; set; }
}

private void button2_Click(object sender, EventArgs e)
{
Person p = new Person();
p.Name = textBox1.Text;
p.Email = textBox2.Text;
p.PhoneNumber = textBox3.Text;
p.MoreInformation = textBox4.Text;
p.BirthDay = dateTimePicker1.Value;
people.Add(p);
listView1.Items.Add(p.Name);
textBox1.Text = "";
textBox2.Text = "";
textBox3.Text = "";
textBox4.Text = "";
dateTimePicker1.Value = DateTime.Now;
}

private void listView1_SelectedIndexChanged(object sender, EventArgs e)
{
try
{
textBox1.Text = people[listView1.SelectedItems[0].Index].Name;
textBox2.Text = people[listView1.SelectedItems[0].Index].Email;
textBox3.Text = people[listView1.SelectedItems[0].Index].PhoneNumber;
textBox4.Text = people[listView1.SelectedItems[0].Index].MoreInformation;
dateTimePicker1.Value = people[listView1.SelectedItems[0].Index].BirthDay;
}
catch { }
}
void Remove()
{
try
{
listView1.Items.Remove(listView1.SelectedItems[0]);
people.RemoveAt(listView1.SelectedItems[0].Index);
}
catch { }
}
private void button3_Click(object sender, EventArgs e)
{
Remove();
textBox1.Text = "";
textBox2.Text = "";
textBox3.Text = "";
textBox4.Text = "";
dateTimePicker1.Value = DateTime.Now;
}

private void deleteToolStripMenuItem_Click(object sender, EventArgs e)
{
Remove();
}

private void button1_Click(object sender, EventArgs e)
{
people[listView1.SelectedItems[0].Index].Name = textBox1.Text;
people[listView1.SelectedItems[0].Index].Email = textBox2.Text;
people[listView1.SelectedItems[0].Index].PhoneNumber = textBox3.Text;
people[listView1.SelectedItems[0].Index].MoreInformation = textBox4.Text;
people[listView1.SelectedItems[0].Index].BirthDay = dateTimePicker1.Value;
listView1.SelectedItems[0].Text = textBox1.Text;
}

private void Form1_FormClosed(object sender, FormClosedEventArgs e)
{
XmlDocument xDoc = new XmlDocument();
string path = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData);
xDoc.Load(path + "\\PhoneBook \\settings.xml");
XmlNode xNode = xDoc.SelectSingleNode("people");
xNode.RemoveAll();
foreach (Person p in people)
{
XmlNode xTop = xDoc.CreateElement("Person");
XmlNode xName = xDoc.CreateElement("Name");
XmlNode xEmail = xDoc.CreateElement("Email");
XmlNode xPhoneNumber = xDoc.CreateElement("PhoneNumber");
XmlNode xMoreInformation = xDoc.CreateElement("MoreInformation");
XmlNode xBirthDay = xDoc.CreateElement("BirthDay");
xName.InnerText = p.Name;
xEmail.InnerText = p.Email;
xPhoneNumber.InnerText = p.PhoneNumber;
xMoreInformation.InnerText = p.MoreInformation;
xBirthDay.InnerText = p.BirthDay.ToFileTime().ToString();
xTop.AppendChild(xName);
xTop.AppendChild(xEmail);
xTop.AppendChild(xPhoneNumber);
xTop.AppendChild(xMoreInformation);
xTop.AppendChild(xBirthDay);
xDoc.DocumentElement.AppendChild(xTop);
}
xDoc.Save(path + "\\PhoneBook \\settings.xml");

}
}
}

No comments:

Post a Comment