C#里遍历子孙控件。然后对其改名。但是它报错: 当前线程处于堆栈溢出状态,因此无法计算表达式的值

.Net技术 码拜 8年前 (2016-04-29) 992次浏览
本人在C#里,遍历界面上全部控件,包括子控件。然后对其改名。但是它报错:
当前线程处于堆栈溢出状态,因此无法计算表达式的值。
public void LoadAllControl(Control.ControlCollection ctls)
{
foreach (Control con in this.Controls)
{
for (int i = 0; i < SYS_Var.Translate.Count; i++)
{
if (con.Text == SYS_Var.Translate[i].cn)
{
con.Text = SYS_Var.Translate[i].en;
break;
}
}
if (con.Controls.Count > 0) LoadAllControl(con.Controls);
}
}
调用方法是:
Form1_Load里的:
LoadAllControl(this.Controls);
解决方案

40

foreach (Control con in this.Controls)
应为
foreach (Control con in ctls)
用 this.Controls 就死循环了,原因是你是递归调用:LoadAllControl(con.Controls);

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明C#里遍历子孙控件。然后对其改名。但是它报错: 当前线程处于堆栈溢出状态,因此无法计算表达式的值
喜欢 (0)
[1034331897@qq.com]
分享 (0)