从DataGridView写入自定义二进制文件

时间:2016-02-05 16:48:10

标签: c# datagridview streamwriter

首先,我将一个相当大的文件加载到数据网格视图中(~100MB)。该文件包含数十个"配置文件"。用户可以在加载到数据网格视图后选择要查看的配置文件。 我想要做的是让用户选择一个特定的配置文件,并将它们保存为一个单独的文件,这样他们就不必每次都打开一个大文件。 以下是文件的加载方式(注意它是数据网格视图的数据绑定):

    private void boardListView_SelectionChanged(object sender, EventArgs e)
    {
        if (boardListView.SelectedRows.Count > 0)
        {
            var s = (BoardCandidateOffset)boardListView.SelectedRows[0].DataBoundItem;
            LoadFromFile(s);
            plotModel.ResetAllAxes();
            plotView.InvalidatePlot(true);
        }
    }

这是我阅读文件的地方:

    private void LoadFromFile(BoardCandidateOffset b)
    {
        profiles.Clear();
        using (var stream = File.OpenRead(CurrentFileName))
        using (var reader = new BinaryReader(stream))
        {
            stream.Seek(b.FileOffset, SeekOrigin.Begin);
            for (int i = 0; i < b.Count; i++)
            {
                profiles.Add(CustProfileList.ReadFromBinaryReader(reader));
            }
        }
    }

在这里,我尝试将选定的配置文件写入新文件:

    private void saveAsToolStripMenuItem_Click(object sender, EventArgs e)
    {
        if (boardListView.Rows.Count > 0)
        {
            SaveFileDialog saveBoard = new SaveFileDialog();
            saveBoard.DefaultExt = ".prof";

            if (saveBoard.ShowDialog() == DialogResult.OK)
            {
                using (Stream stream = File.Create(saveBoard.FileName))
                {
                    using (var writer = new BinaryWriter(stream))
                    {
                        foreach(var p in profiles)
                        {
                            p.WriteToBinaryWriter(writer);
                        }
                    }
                }
            }
        }
        else return;
    }

不幸的是,我在我创建的文件中没有得到任何结果。有什么建议吗?

0 个答案:

没有答案