通过关闭表单保存DataGridView更改

时间:2013-09-24 13:24:41

标签: c# xml datagridview

我正在编写一个程序,我可以将项目添加到DataGridView。这非常有效。我有一个删除按钮,从DataGridView中删除项目。这是有效的,但并不完美。它会删除我的项目,但如果我重新启动该程序,则项目仍在此处。我将项目保存到xml文件。因此,您可以在此处查看我的代码,以便将项目添加到DataGridView

private void btnSave_Click(object sender, EventArgs e)
        {
            if (!File.Exists(@"C:\Users\rs\Desktop\Save\save.xml"))
            {
                using (File.Create(@"C:\Users\rs\Desktop\Save\save.xml")) { }
            }

            xmlnode = new XElement("iToDo",
                    new XElement("Name", txtName.Text),
                    new XElement("Priorität", comPrio.Text),
                    new XElement("Anfangsdatum", txtStart.Text),
                    new XElement("Enddatum", txtEnd.Text),
                    new XElement("Bemerkung", txtComment.Text)
            );

            try
            {
                xmlFile = XElement.Load(@"C:\Users\rs\Desktop\Save\save.xml");
                xmlFile.Add(xmlnode);
            }
            catch (XmlException)
            {
                xmlFile = new XElement("ToDos", xmlnode);
            }

            xmlFile.Save(@"C:\Users\rs\Desktop\Save\save.xml");
            DataSet flatDataSet = new DataSet();
            flatDataSet.ReadXml(@"C:\Users\rs\Desktop\Save\save.xml");
            DataTable table = flatDataSet.Tables[0];
            dataGridToDo.DataSource = table;
        }

在这里,您可以看到我删除行的代码:

private void btnDelete_Click(object sender, EventArgs e)
        {
            foreach (DataGridViewRow row in this.dataGridToDo.SelectedRows)
            {
                dataGridToDo.Rows.RemoveAt(row.Index);
            }
        }

我试图把它放在Form_Closing()中,这不起作用:

private void Form1_FormClosing(object sender, FormClosingEventArgs e)
        {
            e.Cancel = false;
            Application.Exit();
        }

有人能给我一个提示,我可以解决这个问题吗?

提前致谢

干杯

1 个答案:

答案 0 :(得分:1)

嗯..我对你的FormClosing代码感到有些困惑。您从xmlFile编写xml文件并立即再次读取它?在表单上关闭读取它的结果将是多余的,因为数据网格将被销毁退出