gpt4 book ai didi

c# - 需要一种更好的方法来遍历表单控件

转载 作者:行者123 更新时间:2023-11-30 20:01:10 25 4
gpt4 key购买 nike

在我用 C# 编写的 WinForms 应用程序中,一个窗体上有一个按钮,需要稍微改变第二个窗体的外观(只需更改按钮上的文本)。

我已经设法做到了,但是代码太长了,我相信一定有更简洁的方法来实现同样的事情。

这是我的代码,用于 Form frmConflicts 上的按钮,以及它如何更改 Form 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);
}

任何有助于显着减少代码量的帮助都将不胜感激,因为我将需要在应用程序中其他地方的表单之间进行类似的交互。

最佳答案

如果您的按钮是通过设计器添加的,而不是动态创建的,那么解决方案很简单:在您的 frmAdmin 中添加一个方法,例如

public void ChangeCaption(string caption)
{
btnAddCase.Text = "Add case";
}

然后

var frmAdmin = Application.OpenForms.OfType<Form>().FirstOrDefault(x => x.GetType() == typeof(frmAdmin));

if (frmAdmin != null)
{
frmAdmin.ChangeCaption("Add case");
}

关于c# - 需要一种更好的方法来遍历表单控件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19446808/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com