我有两种形式。一个是MDI父母,另一个是MDI孩子。单击父项上的按钮时,将打开子项的表单。我编写了一个代码来防止表单重复。那些方法是:
public Form IsFormAlreadyOpen(Type FormType)
{
foreach (Form OpenForm in Application.OpenForms)
{
if (OpenForm.GetType() == FormType)
return OpenForm;
}
return null;
}
public static Form1 f1;
public void open_Form1()
{
Form UForm = null;
UForm = IsFormAlreadyOpen(typeof(Form1));
if (UForm == null)
{
UForm = new Form1();
UForm.MdiParent = this;
UForm.Show();
}
}
这段代码可在MDI Parent表单中找到。然后单击按钮,调用方法“open_Form1()”并打开子表单。
但问题是如何访问以子窗体形式编写的公共方法? 在子表单上我有这段代码。
public void somefunction()
{
/*code*/
}
如何从MDI Parent调用此方法?
答案 0 :(得分:2)
一旦你获得了对子表单的引用,你需要将它转换为适当的类型然后调用该方法。例如:
class MyChildForm : Form {}
Form childForm = GetAChildFormInstance();
MyChildForm castForm = (MyChildForm)childForm;
castForm.MyMemberMethod();
作为旁注,您似乎没有命名约定。在.NET中,所有公共成员(属性,字段和成员)都应该是PascalCased。 Locals(方法变量和参数)应该是camelCase,私有字段可以是_underscorePrefixed。不应在.NET中的单词之间使用下划线。