数据集对象未更新XML文件

数据集对象未更新XML文件,xml,datagridview,dataset,Xml,Datagridview,Dataset,添加新行时,数据集不会应用DataGridView的更改 using System; using System.Data; using System.IO; using System.Windows.Forms; using System.Xml; namespace DataXML { public partial class Form1 : Form { private DataSet ds = new DataSet("Database");

添加新行时,数据集不会应用DataGridView的更改

using System;
using System.Data;
using System.IO;
using System.Windows.Forms;
using System.Xml;

namespace DataXML
{
    public partial class Form1 : Form
    {
        private DataSet ds = new DataSet("Database");

        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            if (!File.Exists("Database.xml"))
                CreateXMLFile();

            ds.ReadXml("Database.xml");

            DataGridView dgv = new DataGridView();
            dgv.DataSource = ds.Tables["Table"];
            dgv.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill;
            dgv.Dock = DockStyle.Fill;
            dgv.CellValueChanged += new DataGridViewCellEventHandler(CellValueChanged);
            Controls.Add(dgv);
        }

        private void CellValueChanged(object sender, DataGridViewCellEventArgs e)
        {
            MessageBox.Show(ds.GetXml());
            ds.WriteXml("Database.xml");
        }

        private void CreateXMLFile()
        {
            using (DataTable dt = new DataTable("Table"))
            {
                dt.Columns.Add("Column1");
                dt.Columns.Add("Column2");
                dt.Columns.Add("Column3");
                ds.Tables.Add(dt);
            }

            using (XmlTextWriter xtw = new XmlTextWriter("Database.xml", null))
            {
                XmlDocument xd = new XmlDocument();
                xd.LoadXml(ds.GetXml());
                xtw.Formatting = Formatting.Indented;
                xd.Save(xtw);
                xtw.Close();
            }           
        }
    }
}
我不明白为什么会发生这种情况,只需创建新的“Windows窗体应用程序”并粘贴此代码即可进行测试

每次您都会使用新的XML内容更改消息框中单元格的值,但有时(我仍然不知道确切的时间)内容不会由DataSet更改为XML文件,因此如果我关闭程序,DataGridView将不会保存最后的更改

这是我的问题:

Try:ds.AcceptChanges()@jdweng我尝试了所有这些(仍然不起作用)DataGridView dgv=sender作为DataGridView;dgv.Refresh();dgv.Update();ds.GetChanges();ds.AcceptChanges();ds.Tables[“Table”].GetChanges();ds.Tables[“Table”].AcceptChanges();