我有一个包含不同练习名称的文本文件。我希望当我按下“恢复”按钮时,每个练习都会被放入一个文本框。我最初的文本文件是这样的:
string[] lines = System.IO.File.ReadAllLines("savedWorkout.txt");
textBox1_1.Text = lines[0];
textBox1_2.Text = lines[1];
textBox1_3.Text = lines[2];
textBox1_4.Text = lines[3];
textBox1_5.Text = lines[4];
textBox1_6.Text = lines[5];
textBox1_7.Text = lines[6];
这样做可以更新文本框,但是我还有更多的文本框,所以我想在一个循环中填充每个文本框,使代码更紧凑,所以我尝试用数组:
string[] exercises = new string[] { textBox1_1.Text, textBox1_2.Text, textBox1_3.Text, textBox1_4.Text, textBox1_5.Text, textBox1_6.Text, textBox1_7.Text}
for (int i = 0; i < 7; i++)
{
exercises[i] = lines[i];
}
这不起作用。虽然我运行代码时没有错误,但当我按下恢复按钮时,它不会更新文本框。我不确定原因。如果有任何关于如何修复此问题的建议,我们将不胜感激。
1条答案
按热度按时间ss2ws0br1#
exercises
字符串数组只存储字符串。它不存储或克隆对任何.Text
属性的引用。因此,更改数组中的元素会更改数组,但不能更改TextBox。您应该这样做:如果文本框有一个公共的父控件,比如GroupBox或Panel,那就更好了。
在创建
boxes
数组时要小心!当Form类的字段首次初始化时,这些TextBox对象 * 还不存在 。这是稍后作为InitializeComponents()
方法的一部分完成的。因此,请确保数组是使用它的方法的本地数组,或者在调用InitializeComponents() 之后 * 在构造中初始化。