保存并将数据从.txt加载到正确的文本框中
本文关键字:文本 加载 数据 txt 保存 | 更新日期: 2023-09-27 18:01:53
我想使用.txt
文件而不是XML,我想继续使用WriteAllLineS
/WriteAllText
和ReadAllLines
/ReadAllText
。我有两个文本框1 &在它们的旁边是一个"保存"answers"加载"按钮-每个文本框一个。
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);
}
}
我希望能够在两个文本框中写入文本,单击"保存"按钮-这应该将输入的文本写入文件。然后,一旦我重新打开应用程序,点击"加载"按钮,我的数据应该从文件中加载,并出现在文本框中。
目前我的第一个文本框工作。第二个文本框显示的是我在第一个文本框中写的内容,而不是第二个文本框。
为什么你有两个保存/加载按钮?你的问题是关于保存/加载两个文本框一次。所以每次操作只需要一个按钮。
要从文件中保存/加载文本框的行,可以使用WriteAllLines
和ReadAllLines
,就像你已经做的那样。由于您只想要一个文件,因此需要知道第一个文本框的行结束和第二个文本框的行开始的位置。最简单的方法是将行数写入文件:
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;
}
如果您添加了更多的文本框,您可以为所需的文本框数量重复此操作。构建一个文本框数组并循环遍历它。
如果你真的想为每个文本框设置单独的保存/加载按钮,这可能会更令人困惑,因为你只想覆盖一部分文本。基本上,这意味着在保存时,您首先将整个文件读入两个单独的数组,然后将它们写回来,并用新文本替换各自的数组。
当然是文本框中的文本相同后加载-你是使用相同的文件…
您可以将内容保存到两个不同的文件中,那么它应该可以工作