1

我的表单中有一个 tabcontrol,我需要使用 keyup 事件来管理一些东西。

当我按下左键或右键时,标签页会发生变化,我希望禁用 tabcontrol 键盘导航。

有可能这样做吗?

4

3 回答 3

6

您不需要扩展 TabControl,只需订阅它的 KeyDown 事件并处理它。

tabControl1.KeyDown+=new KeyEventHandler(tabControl1_KeyDown);

private void tabControl1_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.KeyCode == Keys.Left || e.KeyCode == Keys.Right)
            {
                e.Handled = true;
            }
        }

tabControl1 不会更改页面。表单的 KeyUp 和 tabControl1 正常触发。

于 2013-03-14T13:05:06.990 回答
1

我的建议是您只需在Form关卡中抓取这些键并将Handled属性设置为true(通过返回true),以便控件不会获得按键。

将此方法添加到您的Form

protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
{
    if (keyData == Keys.Left || keyData == Keys.Right)
    {
        // do what you need to do and the
        // return true will stop processing
        return true;
    }

    return base.ProcessCmdKey(ref msg, keyData);
}
于 2013-03-14T13:05:36.803 回答
1

我想你正在寻找这个。

if (e.KeyCode == Keys.Tab) 
{
    //your logic
    e.SuppressKeyPress();
}

这是我从那里得到的

于 2013-03-14T13:22:25.203 回答