如何动态修改多个TextBox的文本内容,简化重复的赋值代码?
你预期的直接通过变量名拼接textboxN的写法在C#中无法直接实现,以下是两种常用的正确实现方案:
方案一:手动构建控件数组(最推荐)
该方案性能最高、不会出现匹配错误,适合文本框数量固定的场景:
// 按你需要赋值的顺序将文本框放入数组 TextBox[] textBoxArr = { textBox0, textBox1, textBox2, textBox3, textBox4 }; // 循环赋值,同时判断两个数组长度避免索引越界 for (int i = 0; i < textBoxArr.Length && i < array.Length; i++) { textBoxArr[i].Text = array[i]; }
方案二:按控件名动态查找
适合文本框数量多、不想手动构建控件数组的场景,注意如果文本框放在Panel、GroupBox等容器内,需要把代码里的this替换为对应容器的实例名:
for (int i = 0; i < array.Length; i++) { // 第二个参数true表示递归查找所有子容器内的控件 Control[] findRes = this.Controls.Find($"textBox{i}", true); if (findRes.Length > 0 && findRes[0] is TextBox targetTextBox) { targetTextBox.Text = array[i]; } }
额外注意
你示例里的for循环语法存在错误,for的三个参数顺序为「初始化→循环条件→迭代操作」,你写的for(int N=0; N++; N<5)会触发死循环,正确写法为for(int N=0; N<5; N++)。
内容的提问来源于stack exchange,提问作者Ace
相关产品推荐
相关产品推荐

