在我用C#编写的WinForms应用程序中,在一个表单上有一个按钮,需要稍微改变第二个表单的外观(只需更改按钮上的文本)。需要一种更好的方式来遍历表单控件
我已经做到了这一点,但代码非常长,我相信必须有一个更简洁的方法来实现同样的事情。
这里是我的表格frmConflicts按钮代码和它如何改变上表frmAdmin按钮btnAddCase文本(的作品,但似乎太长) -
private void btnNoConflicts_Click(object sender, EventArgs e)
{
try
{
foreach (Form f in Application.OpenForms)
{
if (f.Name == "frmAdmin")
{
frmAdmin a = (frmAdmin)f;
a.conflictsClear = true;
foreach (Control ctrl in a.Controls)
{
if (ctrl.Name == "panAdmin")
{
foreach (Control ctrl2 in ctrl.Controls)
{
if (ctrl2.Name == "tabControlAdmin")
{
TabControl tab = (TabControl)ctrl2;
foreach(TabPage page in tab.TabPages)
{
if (page.Name == "pageNewCase")
{
foreach (Control ctrl3 in page.Controls)
{
if (ctrl3.Name == "panCaseDetails")
{
foreach (Control ctrl4 in ctrl3.Controls)
{
if (ctrl4.Name == "btnAddCase")
{
ctrl4.Text = "Add Case";
}
}
}
}
}
}
}
}
}
}
}
}
this.Close();
}
catch (Exception eX)
{
MessageBox.Show("frmConflicts: btnNoConflicts()" + Environment.NewLine + eX.Message);
}
任何有助于显著减少量的代码将非常感谢,因为我需要在我的应用程序中其他地方的窗体之间进行类似的交互。
这个答案的简单性与我所拥有的相比是不可否认的 - 非常感谢你。 – PJW