C#-将DataGridView保存到文件并加载

C#-将DataGridView保存到文件并加载,c#,datagridview,C#,Datagridview,首先,我有一个简单的Winforms应用程序,只有一个保存和加载按钮,还有一个datagridview控件来保存数据。我要做的是将一些数据输入控件,点击save按钮,它将所有数据保存到计算机本地的一个文件中,当我点击load时,它将加载文件并适当地填充控件,保持所有行、列和数据与保存时相同 虽然对我来说这听起来相当简单,但我似乎找不到保存和加载数据的好方法。我能得到一些指导或例子来开始吗 谢谢。将DataGridView绑定到DataTable,然后使用DataTable ReadXml()和W

首先,我有一个简单的Winforms应用程序,只有一个保存和加载按钮,还有一个datagridview控件来保存数据。我要做的是将一些数据输入控件,点击save按钮,它将所有数据保存到计算机本地的一个文件中,当我点击load时,它将加载文件并适当地填充控件,保持所有行、列和数据与保存时相同

虽然对我来说这听起来相当简单,但我似乎找不到保存和加载数据的好方法。我能得到一些指导或例子来开始吗


谢谢。

将DataGridView绑定到DataTable,然后使用DataTable
ReadXml()
WriteXml()
方法将数据读写到文件中

如果将多个网格绑定到多个相关表,则可以使用数据集表示模式,并使用数据集的
ReadXml()
WriteXml()
方法来读取和写入整个模式


MSDN页面上有一个您可能会觉得有用的示例。

我已经测试了一种将datagridview保存到文件的简单方法:

//DataGridView dgv=...
string file= "c:\\mygrid.bin";
using (BinaryWriter bw = new BinaryWriter(File.Open(file, FileMode.Create)))
{
    bw.Write(dgv.Columns.Count);
    bw.Write(dgv.Rows.Count);
    foreach (DataGridViewRow dgvR in dgv.Rows)
    {
       for (int j = 0; j < dgv.Columns.Count; ++j)
       {
           object val=dgvR.Cells[j].Value;
           if (val == null)
           {
                bw.Write(false);
                bw.Write(false);
            }
            else
            {
                bw.Write(true);
                bw.Write(val.ToString());
             }
         }
    }
//DataGridView dgv=。。。
string file=“c:\\mygrid.bin”;
使用(BinaryWriter bw=new BinaryWriter(File.Open(File,FileMode.Create)))
{
Write(dgv.Columns.Count);
写入(dgv.Rows.Count);
foreach(dgv.Rows中的DataGridViewRow dgvR)
{
对于(int j=0;j
要将此类文件加载到datagridview中:

//DataGridView dgv = ...
dgv.Rows.Clear();
string file="c:\\mygrid.bin";
using (BinaryReader bw = new BinaryReader(File.Open(file, FileMode.Open)))
{
   int n=bw.ReadInt32();
   int m=bw.ReadInt32();
   for(int i=0;i<m;++i)
   {
         dgv.Rows.Add();
         for (int j = 0; j < n; ++j)
         {
               if (bw.ReadBoolean())
               {                                        
                     dgv.Rows[i].Cells[j].Value = bw.ReadString();                                        
               }
               else bw.ReadBoolean();
          }
     }
} 
//DataGridView dgv=。。。
dgv.Rows.Clear();
string file=“c:\\mygrid.bin”;
使用(BinaryReader bw=newBinaryReader(File.Open(File,FileMode.Open)))
{
int n=bw.ReadInt32();
int m=bw.ReadInt32();
对于(int i=0;i