2013-06-20 2 views
0

단일 동작을 수행하기 위해 KeyDown-Event (KeyCode를 사용하고 있기 때문에)를 사용하려고합니다. 이 목적을 위해 나는 연속 동작을 멈추기 위해 bool 변수를 사용하고 있습니다.단일 동작에 대해 KeyDown 이벤트 사용

하지만 내 코드 문제, 그리고 유사한 문제/솔루션 아직 발견하지 않았습니다 알아낼 수 없습니다 ...

이 내을 TabControl 2 개 탭이와 나는 사이를 전환 할 수 있도록하려면 CTRL + TAB을 사용합니다. 전환은 탭의 keydown에서 발생합니다.

bool tabSwitchPossible = true; 

    void Form1_KeyUp(object sender, KeyEventArgs e) 
    { 
     if (e.KeyCode == Keys.Tab) 
      tabSwitchPossible = true; //Reset boolean 
    } 

    void Form1_KeyDown(object sender, KeyEventArgs e) 
    { 
     if (tabSwitchPossible && e.KeyCode == Keys.Tab && e.Modifiers == Keys.Control) 
     { 
      tabSwitchPossible = false; //Set boolean to prevent further action 
      if (mainTabControl.SelectedIndex >= mainTabControl.TabCount - 1) 
       mainTabControl.SelectedIndex = 0; 
      else 
       mainTabControl.SelectedIndex++; 
      return; 
     } 
    } 

키를 놓지 않아도 자동 KeyUp 이벤트가 발생합니까?! 사전들에서

감사합니다 ... 당신은 Form1_KeyUp 및 tabSwitchPossible varible 처리를 제거하고 바로 다음 코드를 복사 할 필요가 없습니다

답변

0

:

void Form1_KeyDown(object sender, KeyEventArgs e) 
    { 
     if (e.KeyCode == Keys.Tab && e.Modifiers == Keys.Control) 
     { 
      if (mainTabControl.SelectedIndex >= mainTabControl.TabCount - 1) 
       mainTabControl.SelectedIndex = 0; 
      else 
       mainTabControl.SelectedIndex++; 
     } 
    } 
+0

내 정확한 첫 번째 시도였다. .. 처음 두 버튼을 누르면 작동했습니다. (단 한번 - 매 달리다) 그러면 더 이상 작동하지 않습니다. 그래서 나는 keyUp과 bool을 추가했다. – Toastgeraet

+0

언제나 나를 위해 일하고 있습니다. 키를 누르는 동안 초점이 응용 프로그램에 있는지 확인하십시오. –

+0

글쎄, 내가 정확히 3 개의 탭이 3 개있는 경우 작동하는 것 같다. 그냥 뒤쪽으로 움직입니다. 그러나 3 개보다 많거나 적은 탭이있는 경우 무작위로 점프합니다. – Toastgeraet