如何通过数组批量更新多个TextBox控件内容?
问题原因与修复方案
失效原因
你这段循环代码没起作用的核心问题是:字符串是值类型。你创建的exercises数组存储的是每个TextBox.Text属性的字符串副本,而非TextBox控件本身的引用。循环中修改exercises[i]只是改变了数组里的字符串值,完全不会影响到对应的TextBox控件的Text属性,自然界面上的内容不会更新。
修复代码
正确的做法是直接存储TextBox控件的引用数组,通过控件引用直接修改其Text属性:
// 存储TextBox控件的引用,而非Text属性的副本 TextBox[] exerciseBoxes = new TextBox[] { textBox1_1, textBox1_2, textBox1_3, textBox1_4, textBox1_5, textBox1_6, textBox1_7}; string[] lines = System.IO.File.ReadAllLines("savedWorkout.txt"); // 循环修改每个TextBox的Text属性 for (int i = 0; i < exerciseBoxes.Length; i++) { exerciseBoxes[i].Text = lines[i]; }
额外优化(可选)
为了避免文件行数和TextBox数量不一致导致的索引越界异常,可以增加长度判断:
string[] lines = System.IO.File.ReadAllLines("savedWorkout.txt"); TextBox[] exerciseBoxes = new TextBox[] { textBox1_1, textBox1_2, textBox1_3, textBox1_4, textBox1_5, textBox1_6, textBox1_7}; // 取两者中较小的长度,防止数组越界 int validCount = Math.Min(lines.Length, exerciseBoxes.Length); for (int i = 0; i < validCount; i++) { exerciseBoxes[i].Text = lines[i]; }
内容的提问来源于stack exchange,提问作者Ethan Harris
相关产品推荐
相关产品推荐

