如何访问父表单函数?

时间:2012-10-25 14:53:18

标签: c# winforms

我试图访问父表单函数(方法)。即使使用静态关键字也无法正常工作。

父表单属于(MDI)类型,并且具有正常的子表单。这是C#应用程序。我试图用这种方式访问​​方法,但没有提前!

this.MdiParent

请帮助我!

5 个答案:

答案 0 :(得分:11)

如果您声明了静态方法,那么您应该通过父窗体的类名称来调用它们:

YourParentFormType.YourStaticMethod();

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

((YourParentFormType)this.MdiParent).YourInstanceMethod();

答案 1 :(得分:3)

您必须将this.MdiParent投射到正确的类型。

如果您的父表单属于MyForm类型,请使用

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

静态方法相同:通过正确的类型

调用它们
MyForm.MyStaticMethod();

答案 2 :(得分:0)

this.MdiParent返回Form

类型的实例

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

为了达到其他方法,您需要将其强制转换为赋予Form格式的类类型,例如

((MyForm的)形式).MyFunction()

答案 3 :(得分:0)

可以使用Type.Method()

访问静态方法

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

MyParentType parent = (MyParentType)this.MdiParent;
parent.SomeMethod();

答案 4 :(得分:0)

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

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

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

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

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

ParentForm parent = this.MdIParent as ParentForm;   // using your own type name of course
string title = parent.MyStringProperty;