是否有更好的替代以下代码在已打开的表单中调用方法?
(Application.OpenForms[0] as Form1).someMethod();
这行代码当然是在一个类中执行的。
更清楚这里是一个例子:
表格代码:
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
public void someMethod()
{
//do stuff
}
}
班级代码:
class Class1
{
public void aMethod()
{
(Application.OpenForms[0] as Form1).someMethod();
}
}
有没有更好的方法来调用someMethod?
答案 0 :(得分:1)
如果您的Class1实例尚未引用Form1实例,则没有其他方法。这引出了几个问题。
首先,如果该Class1对象需要直接影响该Form1实例,那么它为什么不具有该引用呢? Class1对象来自哪里?很可能Form1实例创建了它。如果是这样,为什么Form1在创建时没有将引用传递给Class1对象?
其次,为什么Class1对象无论如何直接影响Form1实例?很可能更好的设计是Class1对象引发Form1可以处理然后影响自身的事件。
答案 1 :(得分:0)
您可以随时向Class1
提供表单实例。