我试图访问父表单函数(方法)。即使使用静态关键字也无法正常工作。
父表单属于(MDI)类型,并且具有正常的子表单。这是C#应用程序。我试图用这种方式访问方法,但没有提前!
this.MdiParent
请帮助我!
答案 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;