Im new to Winforms and C#. My form is suppose to read an XML and Add some of its nodes' values to the forms textBoxes. Also it should update/modify these nodes values by the values inserted by the user into the text boxes then save them. This is what the form looks like :
Form Design
The form code:
bare in mind button4_Click = 'Add button'. button2_Click = 'Modify Button'.
using System; using System.ComponentModel; using System.Windows.Forms; using System.Xml; namespace WindowsForm { public partial class Form1 : Form, INotifyPropertyChanged { XmlDocument doc = new XmlDocument(); XmlElement m_textElem1; XmlElement m_textElem2; XmlElement m_textElem3; public string TextElement1Content { get { return m_textElem1.InnerText; } set { m_textElem1.InnerText = value; } } public string TextElement2Content { get { return m_textElem2.InnerText; } set { m_textElem2.InnerText = value; } } public string TextElement3Content { get { return m_textElem3.InnerText; } set { m_textElem3.InnerText = value; } } public Form1() { InitializeComponent(); } private void Form1_Load(object sender, EventArgs e) { } private void button2_Click(object sender, EventArgs e) { doc.Load("C:\\Users\\Fahad\\Documents\\Visual studio 2015\\Projects\\ClassLibrary1\\XMLFile3.xml"); m_textElem1 = doc.SelectSingleNode("Twittercards/Card1/title") as XmlElement; m_textElem2 = doc.SelectSingleNode("Twittercards/Card1/image") as XmlElement; m_textElem3 = doc.SelectSingleNode("Twittercards/Card1/description") as XmlElement; textBox1.DataBindings.Add("Text", this, "TextElement1Content"); textBox2.DataBindings.Add("Text", this, "TextElement2Content"); richTextBox1.DataBindings.Add("Text", this, "TextElement3Content"); } private void comboBox1_SelectedIndexChanged(object sender, EventArgs e) { comboBox1.DropDownStyle = ComboBoxStyle.DropDownList; } private void textBox1_TextChanged(object sender, EventArgs e) { } private void button3_Click(object sender, EventArgs e) { } XmlDocument xDoc = null; private void button4_Click(object sender, EventArgs e) { OpenFileDialog ofd = new OpenFileDialog(); if (ofd.ShowDialog() == DialogResult.OK) { XmlElement root = xDoc.DocumentElement; XmlNodeList nodes = root.SelectNodes("Twittercards/Card1"); xDoc.Load(ofd.FileName); foreach (XmlNode node in nodes) { var node1 = xDoc.SelectSingleNode(@"Twittercards/Card1/title"); node1.InnerText = textBox1.Text; var node2 = xDoc.SelectSingleNode(@"Twittercards/Card1/image"); node1.InnerText = textBox2.Text; var node3 = xDoc.SelectSingleNode(@"Twittercards/Card1/description"); node1.InnerText = richTextBox1.Text; xDoc.Save(ofd.FileName); // textBox1.Text = xDoc.SelectSingleNode(@"Twittercards/Card1/title").InnerText; // textBox2.Text = xDoc.SelectSingleNode(@"Twittercards/Card1/image").InnerText; // richTextBox1.Text = xDoc.SelectSingleNode(@"Twittercards/Card1/description").InnerText; } } } private void button1_Click(object sender, EventArgs e) { doc.Save("C:\\Users\\Fahad\\Documents\\Visual studio 2015\\Projects\\ClassLibrary1\\XMLFile3.xml"); } public event PropertyChangedEventHandler PropertyChanged; public void NotifyPropertyChanged(string propName) { if (PropertyChanged != null) { PropertyChanged(this, new PropertyChangedEventArgs(propName)); } } private void textBox2_TextChanged(object sender, EventArgs e) { } private void richTextBox1_TextChanged(object sender, EventArgs e) { } } }
The exception from the 'Add button' comes from: XmlElement root = xDoc.DocumentElement;
And the exception from the 'Modify button' comes from: public string TextElement1Content { get { return m_textElem1.InnerText; } set { m_textElem1.InnerText = value; } }
How can i fix this code to solve my original task? Please help. Thanks
No comments:
Post a Comment