将数据从.txt保存并加载到右侧文本框中

时间:2013-03-03 20:43:10

标签: c# file textbox load save

我想使用.txt文件而不是XML,我想继续使用WriteAllLineS / WriteAllTextReadAllLines / ReadAllText。 我有两个文本框1& 2和它们旁边是一个“保存”和“加载”按钮 - 每个文本框一个。

我的代码到目前为止将第一个框中的数据复制到第二个框中。这是清单:

public partial class Form1 : Form
{
 string fileName = "Cache/textBoxdata.txt";

    public Form1()
    {
        InitializeComponent();
    }
private void load1_Click_1(object sender, EventArgs e)
    {  
      textBox1.Lines = File.ReadAllLines(fileName);
    }

 private void Save1_Click_1(object sender, EventArgs e)
    {
        File.WriteAllLines(fileName, textBox1.Lines);
     }

private void load2_Click(object sender, EventArgs e)
    {
        textBox2.Lines = File.ReadAllLines(fileName); 
    }

private void save2_Click(object sender, EventArgs e)
    {
        File.WriteAllLines(fileName, textBox2.Lines);
    }
}

我希望能够在两个文本框中编写文本,单击“保存”按钮 - 这应该将输入的文本写入文件。然后,一旦我重新打开应用程序,请单击“加载”按钮,我的数据应该从文件中加载并显示在文本框中。

目前我的第一个文本框正常工作。第二个文本框显示我在第一个文本中写的内容 - 而不是第二个文本。

2 个答案:

答案 0 :(得分:1)

为什么你有两个保存/加载按钮?您的问题是关于一次保存/加载两个文本框。因此,每个操作只需要一个按钮。

要将文本框的行保存/加载到文件中,您可以使用WriteAllLinesReadAllLines。由于您只想拥有一个文件,因此需要知道第一个文本框的行和第二个文本框的行开始的位置。最简单的方法是将行数写入文件:

private void SaveTextboxes()
{
    List<string> linesToSave = new List<string>();

    linesToSave.Add(textBox1.Lines.Length.ToString());
    linesToSave.AddRange(textBox1.Lines);

    linesToSave.Add(textBox2.Lines.Length.ToString());
    linesToSave.AddRange(textBox2.Lines);

    File.WriteAllLines(filename, linesToSave);
}

private void LoadTextboxes()
{
    string[] loadedLines = File.ReadAllLines(filename);

    int index = 0;

    int n = int.Parse(loadedLines[index]);
    string[] lines = new string[n];
    Array.Copy(loadedLines, index + 1, lines, 0, n);
    textBox1.Lines = lines;

    index += n + 1;

    n = int.Parse(loadedLines[index]);
    lines = new string[n];
    Array.Copy(loadedLines, index + 1, lines, 0, n);
    textBox2.Lines = lines;
}

如果添加更多文本框,则可以针对所需数量的文本框重复此操作。构建一个文本框数组并循环遍历它。

如果你真的想为每个文本框分别设置保存/加载按钮,这可能会让你感到更加困惑,因为你只想覆盖部分文本。基本上这意味着在保存时,您首先将整个文件读入两个单独的数组,然后将它们写回,相应的数组将替换为新文本。

答案 1 :(得分:0)

当然是加载后文本框中的文本相同 - 你使用的是同一个文件......

您可以将内容保存到两个不同的文件中,然后它应该可以正常工作