2014-07-21 2 views
1

MDI에 여러 형식이 있습니다. 저는 같은 아이를 몇 번, 예를 들어 3 번 만듭니다. 선택한 자녀에게 보내고 싶은 데이터가 있지만 항상 최신 아이에게 데이터를 보냅니다.MDI의 다중 자식

이 샘플 코드입니다 :

f13 = new Excel_form(this, Convert.ToInt16(words[1].Substring(0, words[1].Length - 1))); 
f13.MdiParent = this; 
f13.FormClosed += new FormClosedEventHandler(f13_FormClosed); 
f13.Show(); 

그리고 데이터를 전송하는 기능 :

f13.Odebrane(odebrane, ktory_form_pyta); 

내가 데이터를 전송하려는 자신에 의해 선택 형성한다. 이 같은 것 :

Form[] children = this.MdiChildren; 
children[CHOSEN_CHILD].WindowState = FormWindowState.Normal; 

이것은 데이터를 전송하는 것이 아니라 WindowState에서 작동합니다. 가능합니까?

+0

같은 뭔가 정말'WindowState' 위해 일하고, 아니면 그냥 최신 아이가 하나가 표시되고 있기 때문에 작동하는 것처럼 무엇입니까? – krillgar

+2

음 ... 어떻게 CHOSEN_CHILD을 (를) 계산 하시겠습니까? –

+0

@krillgar -'WindowState'에 대해 잘 작동합니다. I Chosen이 나타납니다. 나는 내가 원하는 아이에게 기능을 발휘할 수 없다. 나는 최신의 것에 만 접근 할 수있다. @AdrianoRepetti - CHOSEN_CHILD는 정상적인 'int'입니다. ARRAY에있는 모든 아이들의 주소가 있습니다. – user3447900

답변

1

그것은 양식이 클래스에 캐스트해야

이 새 차일을 만드는 방법이다.

MdiChildren은 "양식"의 모음으로, 사용하려는 방법이 없습니다.

(children[CHOSEN_CHILD] as Excel_form).Odebrane(odebrane, ktory_form_pyta);

+0

당신은 최고가 되겠습니다. : D 고마워, 그건 내 문제의 해결책이다. – user3447900

0

모든 양식을 가져 와서 반복하고 태그별로 특정 양식을 찾을 수 있습니다.

f13 = new Excel_form(this, Convert.ToInt16(words[1].Substring(0, words[1].Length - 1))); 
f13.MdiParent = this; 
f13.Tag = 1; // int, string... whatever you want, Tag is object type. 
f13.FormClosed += new FormClosedEventHandler(f13_FormClosed); 
f13.Show(); 

반복 처리를 특정 하나를 찾을 :

Form[] children = this.MdiChildren; 
foreach (Form child in children) 
{ 
    if(Convert.ToInt32(child.Tag) == 1) // Do something 
    else // Do something else 
} 
+0

위의 예와 같이 작동합니다. 나는 선택한 아이에서 기능에 접근하고 싶다. 예를 들어 나를 허용하지 않습니다 :'if (Convert.ToInt32 (child.Tag) == 1) child.Odebrane (odebrane, ktory_form_pyta); ' – user3447900

관련 문제