我有一系列包含文本框和其他輸入控件的選項卡的tabcontrol。如果我點擊標題標題,我可以使用左右箭頭鍵瀏覽標籤,但是如果我當前在文本框或其他控件中,那麼我不能,假設這是因爲文本框需要所有的關鍵字事件。我曾嘗試將事件處理程序附加到keydown和previewkeydown,但它們不會被解僱。如何使用箭頭鍵導航tabcontrol?
即使子控件具有焦點,是否有辦法通過tabcontrol獲取關鍵事件?
我有一系列包含文本框和其他輸入控件的選項卡的tabcontrol。如果我點擊標題標題,我可以使用左右箭頭鍵瀏覽標籤,但是如果我當前在文本框或其他控件中,那麼我不能,假設這是因爲文本框需要所有的關鍵字事件。我曾嘗試將事件處理程序附加到keydown和previewkeydown,但它們不會被解僱。如何使用箭頭鍵導航tabcontrol?
即使子控件具有焦點,是否有辦法通過tabcontrol獲取關鍵事件?
您可以使用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,但如果單選按鈕的標籤頁具有焦點不起作用。
按住CTRL鍵,然後按左右箭頭鍵切換選項卡。標準操作系統行爲,任何程序中的所有選項卡控件都是這樣操作的,不要更改它。 –
CTRL +左/右除CTRL + TAB外沒有任何作用!謝謝。 – mbdavis