如何使用箭头键导航tabcontrol?

时间:2015-05-11 10:40:40

标签: c# winforms events input

我有一个tabcontrol,其中包含一系列包含文本框和其他输入控件的选项卡。如果我单击选项卡标题,我可以使用左右箭头键浏览选项卡,但如果我当前在文本框或其他控件中,那么我不能,假设这是文本框所需要的所有关键事件。我已经尝试将事件处理程序附加到keydown和previewkeydown,但它们不会被解雇。

即使子控件具有焦点,有没有办法通过tabcontrol获取关键事件?

1 个答案:

答案 0 :(得分: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++;
            }
        };
    }

注意:进行了更多测试后,它适用于包含TextBoxes的TabSheets,但如果RadioButtons在TabSheet中具有焦点,则无效。