按下Tab键将焦点移动到下一个标签项

时间:2015-08-19 08:17:19

标签: c# winforms

我的表单中有TabControl,其中包含5个标签。当我按 TAB 键时,我希望焦点转到下一个选项卡。我已设置每个TabIndex控件的TabPage属性。但它没有用。

我还尝试使用RichTextBox中的TabPages代码。

private void rchFisrtTab_KeyDown(object sender, KeyEventArgs e)
{
    if (e.KeyCode == Keys.Tab)
    {
       tabText.SelectedTab = tbpSecondTab;
       rchSecondTab.Focus();
       rchSecondTab.Select();
    }
}

但它根本没有被触发!所以我想知道如何让它发挥作用。

谢谢。

1 个答案:

答案 0 :(得分:0)

您需要通过继承TAB并覆盖其中一个TabControl方法来拦截ProcessXXX密钥,例如

class FormTab2 : Form {

    public FormTab2() {
        TabControl tc = new TC2 { Dock = DockStyle.Fill };
        TabPage p1 = new TabPage() { Text = "Tab1" };
        TabPage p2 = new TabPage() { Text = "Tab2" };
        p1.Controls.Add(new Button { Text = "Button1" });
        p2.Controls.Add(new Button { Text = "Button2" });
        tc.TabPages.Add(p1);
        tc.TabPages.Add(p2);
        Controls.Add(tc);
    }

    public class TC2 : TabControl {

        protected override bool ProcessCmdKey(ref Message msg, Keys keyData) {
            if (keyData == Keys.Tab && this.Focused) {
                int x = (SelectedIndex + 1) % TabPages.Count;
                SelectedTab = TabPages[x];
                //this.Focus();
                return true;
            }
            return base.ProcessCmdKey(ref msg, keyData);
        }
    }
}