2013-03-05 2 views
0

자식 폼 이벤트 중 하나에서 MDI 부모 폼을 다시로드해야합니다.MDI 부모를 자식 폼에서 새로 고침

내가 코드 아래 사용했지만이 솔루션하시기 바랍니다 어느 하나 인 것을

//Child form even 
private void btnChange_Click(object sender, EventArgs e) 
{ 
    this.ParentForm.Refresh(); 
} 

를 작동하지 않는 나를 좋습니다.

+0

working_되지 않습니다

public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void Form1_Load(object sender, EventArgs e) { InitializeFormData(); } public void InitializeFormData() { // do the initialization } } 

지금 당신은 쉽게 자식 폼에 InitializeFormData 메소드를 호출 할 수 있습니까? –

+0

@AlexFilipovici 예외는 없지만 다시로드하지는 않습니다. –

+0

'ParentForm' 대신'MdiParent' 속성을 사용해 보셨습니까? –

답변

0

1) MDI 부모 폼의 속성이 IsMdiContainertrue으로 설정되어 있는지 확인해야합니다.
2) 당신은 자식 폼의 MdiParent 속성이 부모 폼으로 설정되어 있는지 확인해야합니다

ChildForm child = new ChildForm(); 
child.MdiParent = this; 
child.Show(); 

3) 그런 다음 MdiParent 속성 아이에서 MDI 부모에 액세스 할 수 있습니다

this.MdiParent.Refresh(); // or this.MdiParent.Invalidate(); 
당신이 원하는 모든이의 몸을 실행하는 경우 부모 폼의 코드 아래
+0

여전히 작동하지 않는, 나는 MdiParent 양식의 Load 이벤트를 호출해야합니다. –

-1

사용은 UI,

this.Controls.Clear(); 

this.InitializeComponent(); 
+0

한 번 비슷한 문제에 직면했습니다. UI를 다시 그려 넣고 나에게 맞습니다. –

+0

뭔가 제안하기 전에 결과를 더 잘 이해하십시오. 당신이 제안한 것은 어떤 상황에서는 효과가있을 수 있지만 대부분의 경우에는 작동하지 않습니다. 그리고 꼭 모든 문제에 대한 올바른 해결책은 아닙니다. –

+0

나는 여기 아무것도 망쳤다 고 생각하지 않는다. 배변하지 말고, 멋지게 서로 돕기 위해 stackoverflow를 더 잘 만들어라. 감사합니다 –

0

그리기를 다시합니다 부모 양식의 Load 이벤트가 발생하면 코드를 여러 번 호출 할 수있는 방식으로 클래스를 다시 디자인해야합니다.

예를 들어 Form1이라는 양식이 있다고 가정합니다. 당신은 예외를받을 수 있나요 - 그것은 _but

((Form1)this.MdiParent).InitializeFormData(); 
관련 문제