本人在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);
当前线程处于堆栈溢出状态,因此无法计算表达式的值。
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);
应为
foreach (Control con in ctls)
用 this.Controls 就死循环了,原因是你是递归调用:LoadAllControl(con.Controls);