2015-05-11 221 views
1

我有一系列包含文本框和其他輸入控件的選項卡的tabcontrol。如果我點擊標題標題,我可以使用左右箭頭鍵瀏覽標籤,但是如果我當前在文本框或其他控件中,那麼我不能,假設這是因爲文本框需要所有的關鍵字事件。我曾嘗試將事件處理程序附加到keydown和previewkeydown,但它們不會被解僱。如何使用箭頭鍵導航tabcontrol?

即使子控件具有焦點,是否有辦法通過tabcontrol獲取關鍵事件?

+1

按住CTRL鍵,然後按左右箭頭鍵切換選項卡。標準操作系統行爲,任何程序中的所有選項卡控件都是這樣操作的,不要更改它。 –

+0

CTRL +左/右除CTRL + TAB外沒有任何作用!謝謝。 – mbdavis

回答

0

您可以使用TabControl的KeyDown事件來偵聽箭頭鍵。

但是,這可能會與其他控件衝突: 在TextBox中左右移動光標。

如果所有的控件都是隻讀的,那麼這不是一個大問題。 但是,如果允許人們更改數據,那麼攔截箭頭鍵將會干擾標準導航。

private void tabControl1_KeyDown(object sender, KeyEventArgs e) { 
     if (e.KeyCode == Keys.Left) { 
      if (tabControl1.SelectedIndex > 0) { 
       tabControl1.SelectedIndex--; 
      } 
     }; 
     if (e.KeyCode == Keys.Right) { 
      if (tabControl1.SelectedIndex < tabControl1.TabCount - 1) { 
       tabControl1.SelectedIndex++; 
      } 
     }; 
    } 

注意:做完更多的測試,正常工作與包含文本框TabSheets,但如果單選按鈕的標籤頁具有焦點不起作用。

+0

我在我的問題中說過我試過這個,謝謝 – mbdavis

+0

它適用於我的機器。 – Ulric

+0

所以,如果你添加一個選項卡控件,然後將其中一個頁面上的文本框,然後嘗試按左/右,而在文本框內,它會切換標籤? – mbdavis