将数据从 .txt 保存并加载到正确的 texbox
Posted
技术标签:
【中文标题】将数据从 .txt 保存并加载到正确的 texbox【英文标题】:save and load data from .txt to the right texbox 【发布时间】:2013-03-03 20:43:10 【问题描述】:我想使用.txt
文件而不是XML,并且我想继续使用WriteAllLineS
/WriteAllText
和ReadAllLines
/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);
我希望能够在两个文本框中写入文本,单击“保存”按钮 - 这应该将输入的文本写入文件。然后,一旦我重新打开应用程序点击“加载”按钮,我的数据应该从文件中加载并出现在文本框中。
目前我的第一个文本框有效。第二个文本框显示了我在第一个中写的内容 - 而不是第二个。
【问题讨论】:
一个问题会有所帮助 我已经编辑了你的标题。请参阅“Should questions include “tags” in their titles?”,其中的共识是“不,他们不应该”。 【参考方案1】:为什么有两个保存/加载按钮?您的问题是关于一次保存/加载两个文本框。所以每个操作只需要一个按钮。
要将文本框的行保存/加载到文件中/从文件中加载,您可以像以前一样使用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;
如果您添加更多文本框,您可以重复此操作以获得所需数量的文本框。构建一个文本框数组并循环遍历它。
如果您真的想为每个文本框设置单独的保存/加载按钮,这可能会有点混乱,因为您只想覆盖文本的一部分。基本上这意味着在保存时,您首先将整个文件读入两个单独的数组,然后将它们写回,相应的数组被新文本替换。
【讨论】:
感谢这个完美的作品,看看我现在是否可以添加我所有的其他文本框 我总共有 19 个文本框,现在它有一条错误消息说索引超出了数组的范围【参考方案2】:当然是加载后文本框中的文本相同-您使用的是同一个文件...
您可以将内容保存到两个不同的文件中,然后它应该可以工作
【讨论】:
是的,我希望我在每个文本框中写的内容都相同,但在我正在处理的示例中,每个人的内容都不一样,现在有两个文本框。我在第一个中输入了 Hi,然后在我去重新加载时输入第二个,他们都说 Hi 是的,因为两个文本框都将其内容保存到单个文件 Cache/textBoxdata.txt 这没有提供问题的答案。要批评或要求作者澄清,请在其帖子下方发表评论。以上是关于将数据从 .txt 保存并加载到正确的 texbox的主要内容,如果未能解决你的问题,请参考以下文章