2012-10-25 5 views
1

상위 폼 함수 (메서드)에 액세스하려고합니다. 정적 키워드를 사용해도 작동하지 않습니다.상위 폼 함수에 액세스하는 방법?

상위 폼은 유형이 (MDI)이며 일반 자식 폼을가집니다. 이것은 C# 응용 프로그램입니다. 이 방법을 사용하여 메소드에 액세스하려고하지만 사전은 사용하지 마십시오!

this.MdiParent 

제발 도와주세요! 당신이 정적 메소드를 선언하는 경우

+0

당신이 '이 캐스팅 시도 되세요 .MdiParent' 부모 형식의 형식? –

답변

8

, 당신은 부모 폼의 클래스 이름을 통해 그들을 호출해야합니다 : 당신은 인스턴스 메소드를 사용하려면

YourParentFormType.YourStaticMethod(); 

는, 당신은 public로 선언하고 호출해야 MDI 부모 참조를 주조를 통해 :

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

정적이 아닌 경우? – Hatem

+0

@Hatem도 메소드 호출을 위해 업데이트되었습니다. –

+0

Great :) Thanks friend – Hatem

3

올바른 유형으로 this.MdiParent을 사용해야합니다.

당신의 부모 폼 유형 MyForm의 경우

는 정적 메소드

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

같은를 사용 : 타입 형태의 인스턴스를 반환 this.MdiParent 권리 유형

MyForm.MyStaticMethod(); 
+0

죄송합니다.이 기능이 작동하지 않습니다. 내 말은 네이티브 메소드 만이 첫 번째 케이스 (정적이 아님)에 대해 사용자 정의 된 메소드가 아니라는 것을 의미합니다. – Hatem

+0

@Hatem 정확히 같은 대답을 수락하는 동안 * 작동하지 않는 것은 무엇을 의미합니까? – sloth

0

통해 전화

이것은 Form 클래스 정의에 정의 된 함수 만 표시한다는 것을 의미합니다.

다른 메소드에 접근하려면 Form을 함축하는 클래스 유형으로이를 캐스팅해야합니다.

((MyForm을 개)) .MyFunction()는

0

정적 Type.Method() 방법을 사용하여 액세스 될 수있다.

인스턴스 메소드에 액세스하려면 MdiParent을 올바른 유형으로 변환해야합니다.

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

죄송합니다.이 기능이 작동하지 않습니다.나는 네이티브 메소드 만이 사용자 정의 메소드가 아닌 것을 허용한다는 것을 의미합니다. – Hatem

+0

이 줄과 허용되는 대답의 차이점은 무엇입니까? 작동하지 않는 것은 무엇입니까? –

0

당신은 당신이 그것을 만들 때 형태의 MdiParent 속성을 설정해야합니다

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

는 그런 다음 부모 폼에 액세스 할 수 있습니다. 그냥 폼 속성을 원하는 경우에 당신은 돈, t 캐스팅해야합니다 당신이 cusotm 속성에 액세스해야하는 경우

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

을/methoids이 딱 맞는 유형으로 캐스트 :

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