在我用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