1

我正在尝试访问父表单功能(方法)。即使使用 static 关键字,它也不起作用。

父窗体是类型 (MDI) 并具有正常的子窗体。这是 C# 应用程序。我正在尝试使用这种方式来访问方法,但没有提前!

this.MdiParent

请帮我 !

4

5 回答 5

11

如果你声明了静态方法,那么你应该通过父表单的类名来调用它们:

YourParentFormType.YourStaticMethod();

如果要使用实例方法,则应将它们声明为public并通过强制转换 MDI 父引用调用:

((YourParentFormType)this.MdiParent).YourInstanceMethod();
于 2012-10-25T14:54:47.650 回答
3

您必须转换this.MdiParent为正确的类型。

如果您的父表单是 type MyForm,请使用

 ((MyForm)this.MdiParent).MyMethod();

静态方法也一样:通过正确的类型调用它们

MyForm.MyStaticMethod();
于 2012-10-25T14:55:32.147 回答
0

this.MdiParent 返回 Form 类型的实例

这意味着它只会显示在 Form 类定义中定义的函数。

为了达到其他方法,您需要将其转换为实现表单的类类型,例如

((MyForm)Form).MyFunction()

于 2012-10-25T14:57:00.833 回答
0

静态方法可以使用Type.Method().

如果要访问实例方法,则需要将其MdiParent转换为正确的类型。

MyParentType parent = (MyParentType)this.MdiParent;
parent.SomeMethod();
于 2012-10-25T14:57:17.413 回答
0

MdiParent创建表单时需要设置表单的属性:

// Make the new form a child form.
child.MdiParent = this;
// Display the child form.
child.Show();

然后您可以访问父表单。如果您只想要 Form 属性,则不需要强制转换:

Form parent = this.MdIParent;
string parentTitle = parent.Text;

如果您需要访问 cusotm 属性/方法,只需将其转换为正确的类型:

ParentForm parent = this.MdIParent as ParentForm;   // using your own type name of course
string title = parent.MyStringProperty;
于 2012-10-25T15:05:32.453 回答