글쎄, 이건 어쩌면 간단하지만 나는 못을 박을 수 없다.
나는 Mdi 컨테이너에서 from n mdi childs를 사용하여 win forms 응용 프로그램을 보유하고 있습니다. ActiveMdiChild를 설정하는 방법?
예를 들어 나는 4 개의 MDI 차일드 (0,1,2,3)를 가지고 있으며 각 데이터에 적절한 데이터를 전달하려고합니다. 그러나 활성화 된 데이터 만 데이터를 가져옵니다 ..활성 mdi 자식을 변경하는 방법은 무엇입니까?
1
A
답변
1
특정 MDI 자식, 당신은 ActivateMdiChild
MDI 부모의 방법을 사용하고 활성화하기 위해 자식을 전달할 수 있습니다. 예를 들어 :
this.ActivateMdiChild(this.MdiChildren[0]);
는 폼의 MDI 자식을 활성화합니다.
양식 매개 변수가 이미 활성 MDI 자식 폼인 경우
ActivateMdiChild
메서드가 반환됩니다. form이 null이 아니면 이 활성 MDI 자식 폼으로 설정됩니다. 양식 매개 변수가 이든 아니든간에ActivateMdiChild
은MdiChildActivate
이벤트를 발생시킵니다.
0
당신은이 작업을 수행 할 수 있습니다 이것은 당신이 당신의 acitvemdichild로 설정 한 후 확인하는 형태 인 경우 문을 확인하는 경우
foreach (Form frm in this.MdiChildren)
{
if (frm is Form1)
{
Form frmChild = this.ActiveMdiChild;
frmChild .Show();
}
}
을 아이가 다른 양식 이름이있는 경우, 당신은 할 수 있습니다.
작동하지 않는 것 같아요.이 내부 멀티 스레딩 메서드를 BlockingCollection 배열을 반복하고 appropiate BC 각 자식 전달할 시도합니다 .... 나는 얻을 : 크로스 스레드 작업 유효하지 않음 : Control ''이 작성된 스레드가 아닌 다른 스레드에서 액세스했습니다. – John
그것은 완전히 다른 질문이며 나는 답을 손질하지 않고 깨끗하게 유지하는 것을 선호합니다. 하지만 UI 스레드와 다른 스레드에서 메서드를 호출 할 때는 'this.Invoke (new Action (() => {this.ActivateMdiChild (this.MdiChildren [0]);})));' –
First 두 개의 [WinForms 태그 자주 질문] (https://stackoverflow.com/questions/tagged/winforms?sort=frequent)은 다른 스레드에서 UI 업데이트에 응답합니다. –