【发布时间】:2018-07-06 17:08:24
【问题描述】:
我有多个表单,使用名为“UpdateTheme”的相同方法更改表单的背面颜色。我希望能够从另一种形式调用所有这些方法。
我尝试使用“UpdateTheme”方法创建一个基本表单,然后让所有其他表单从基本表单继承,但我不知道如何/是否可以从一个单独的方法调用派生表单方法的每个实例“设置”表单。
public abstract class CustomForm : Form
{
public void UpdateTheme(string theme)
{
if (theme == "dark")
{
this.BackColor = Color.Black;
}
else if (theme == "light")
{
this.BackColor = Color.White;
}
}
}
在设置表单中我会有类似的东西
public void btnSetThemeToDark_Click(object sender, EventArgs e)
{
foreach (instance of derived form)
{
derivedForm.UpdateTheme("dark");
}
}
最好的方法是什么?
【问题讨论】:
-
如果您已经在某处跟踪打开的表单,则可以让每个实例在您打开它时订阅“theme_changed”事件,并从点击处理程序中引发该事件。
-
非常感谢。我现在试试。
-
还有
Application.OpenForms,它已经包含了这样一个列表。另请参阅stackoverflow.com/q/26308602/1132334,其中使用OfType解决了仅影响“派生”表单的要求 -
我添加了一个像你和feal建议的事件。工作得很好。我并不是说要求只处理派生形式,我只是建议我自己的问题的可能答案。
标签: c# forms winforms visual-studio