2011-09-28 4 views
1

내가 네 mdichild 형태, 그 중 하나가 배경으로 사용하고 일부 컨트롤을 들고있다 ..을 사용하여 다른 mdichild 형태를 전환 할 때 점점 초점/활성화에서이 배경 mdichild 양식을 방지하는 방법 Ctrl + Tab을 사용하여 다른 mdichild 폼간에 전환 할 때 특정 mdichild 폼이 포커스/활성화되지 않도록하는 방법은 무엇입니까? 내 MDI 응용 프로그램에서 C#

Ctrl + Tab?

다른 말로하면이 배경 mdi 하위 폼을 Ctrl + Tab 시퀀스에서 건너 뛰는 방법은 무엇입니까? 그들 사이를 전환 할 때 다른 mdichild 형식을 숨기지 않도록 z 순서를 마지막으로 만듭니다.

미리 감사드립니다.

답변

0

Form.ProcessCmdKey를 무시하고 백그라운드 양식을 건너 뜁니다.

protected override bool ProcessCmdKey(ref Message msg, Keys keyData) 
    { 
     if ((keyData & Keys.Tab) == Keys.Tab && (keyData & Keys.Control) == Keys.Control) 
     { 

      Form nextForm = GetNexMdiChildForm(); 
      if (nextForm != null) 
      { 
       nextForm.Activate(); 
       return false; 
      } 
     } 

     return base.ProcessCmdKey(ref msg, keyData); 
    } 

    private Form GetNexMdiChildForm() 
    { 
     //get current form index 
     Form currentForm = this.ActiveMdiChild; 
     int currentFormIndex = Array.IndexOf(this.MdiChildren, currentForm); 

     //get next form index 
     int nextFormIndex = currentFormIndex + 1; 
     if (this.MdiChildren.Length == nextFormIndex) 
     { 
      nextFormIndex = 0; 
     } 

     //check if next form is Form 3 
     if (this.MdiChildren[nextFormIndex] == background_mdichild_form) 
     { 
      nextFormIndex++; 
      if (this.MdiChildren.Length == nextFormIndex) 
      { 
       nextFormIndex = 0; 
      } 
     } 
     return MdiChildren[nextFormIndex]; 
    }