2011-03-01 10 views
0

해결할 수없는 약간의 문제가 있습니다. 문제는 WinForm에 여러 컨테이너 (TabControls, Panels, ...)가 있습니다.크로스 컨 테이너 탭 만들기 색인

컨트롤 내의 탭 순서가 잘 작동합니다 (물론). 그러나 고객이 첫 번째 컨테이너 (현재 tabindex 0,0,1)의 텍스트 상자에서 다른 컨테이너의 컨트롤 (현재 tabindex 0,1,0,1)으로 이동하도록 taborder를 변경하도록 요청했습니다.

첫 번째 방법은 두 번째 탭 인덱스를 0,0,1,1로 설정했지만 효과가 없습니다. 이 탭은 0,0,1에서 0,0,2로 점프합니다.

나는 몇 가지 다른 조합을 시도했지만 결과는 없습니다.

아무도 내가이 문제를 해결할 수있는 힌트를 제공 할 수 있습니까?

추신 : 0,0,0이 명확하지 않다 단지의 경우 컨트롤을 포함하는 용기를 의미

답변

3

당신은 그 제어의 Leave event 작업, 수동에 뒤에 코드에 초점을 설정할 수 있습니다 이 작업을 수행.

private void textBox1_Leave(object sender, System.EventArgs e) 
{ 
    textBox2.Focus(); 
} 
+0

간단하지만 효과적입니다. 고마워요. – Robert

+1

"TAB"키를 누르면 조금만 정리하고 다음 텍스트 상자로 이동합니다. –

0

Tab 키를 사용할 경우, 사용하지하는 것이 좋습니다 당신은 예를 들어, 마우스로 변경하는 경우 그것은 나쁜 리디렉션을 생성합니다 Leave event .

protected override bool ProcessCmdKey(ref Message msg, Keys keyData) 
     { 
      bool baseResult = base.ProcessCmdKey(ref msg, keyData); 

      //if key is tab and TextBox1 is focused then jump to TextBox2 
      if (keyData == Keys.Tab && TextBox1.Focused) 
      { 
       TextBox2.Focus(); 
       return true; 
      } 
      else if (keyData == Keys.Tab && TexBox2.Focused) 
      { 
       TextBox3.Focus(); 
       return true; 
      } 
       return baseResult; 
     } 

가 도움이 희망 :

더 나은 재정 여기 ProcessCmdKey

좋은 솔루션입니다.