打开/保存多个文本框值c#windows窗体

时间:2015-05-14 20:51:10

标签: c# winforms streamreader openfiledialog

我创建了一个简单的例子,我无法在任何地方找到解决方案。我想保存UI文本框数据,并在另一个(相同的)Windows窗体文件中打开它。 这是代码示例:

private void btnSave_Click(object sender, EventArgs e)
        {
            SaveFileDialog sfd = new SaveFileDialog();
            if (sfd.ShowDialog() == DialogResult.OK)
            {
                StreamWriter write = new StreamWriter(File.Create(sfd.FileName));
                write.Write(txtFirstInput.Text);
                write.Write(txtSecondInput.Text);
                write.Close();
                write.Dispose();
            }
        }

        private void btnOpen_Click(object sender, EventArgs e)
        {
            OpenFileDialog ofd = new OpenFileDialog();
            if(ofd.ShowDialog() == DialogResult.OK)
            {
                StreamReader read = new StreamReader(File.OpenRead(ofd.FileName));
                txtFirstInput.Text = read.ReadLine();
                txtSecondInput.Text = read.ReadLine();
                read.Close();
                read.Dispose();
            }
        }

我遇到的问题是所有输入数据都在第一个文本框中。怎么分开呢?什么是最简单,最有效的方法? 我应该创建并使用字节缓冲区(和HxD)来通过用户输入进行流式传输吗?

有人可以给我一些指示或示例。

感谢您的时间

1 个答案:

答案 0 :(得分:2)

使用ReadLine读取数据,因此在将数据写入磁盘时需要使用WriteLine

private void btnSave_Click(object sender, EventArgs e)
{
    SaveFileDialog sfd = new SaveFileDialog();
    if (sfd.ShowDialog() == DialogResult.OK)
    {
        using(StreamWriter write = new StreamWriter(File.Create(sfd.FileName)))
        {
            write.WriteLine(txtFirstInput.Text);
            write.WriteLine(txtSecondInput.Text);
        }
    }
}

使用Write,数据被写入磁盘而没有行回车,所以它只在一行上。当您调用ReadLine时,将读取所有数据并将其放在第一个文本框中。

另请注意,始终建议在using语句中包含StreamWriter之类的IDisposable对象。此方法将确保您的Stream正常关闭并在出现异常时处理。 (同样应该应用于下面的StreamReader)