C# c使用tabcontrol禁用箭头导航

C# c使用tabcontrol禁用箭头导航,c#,winforms,visual-studio-2008,tabcontrol,onkeyup,C#,Winforms,Visual Studio 2008,Tabcontrol,Onkeyup,我的表单中有一个tabcontrol,我需要使用keyup事件来管理一些事情 当我按下左键或右键时,选项卡页面会改变,我希望禁用tabcontrol键盘导航 有可能做到这一点吗?您不需要扩展TabControl,只需订阅它的KeyDown事件并处理它即可 tabControl1.KeyDown+=new KeyEventHandler(tabControl1_KeyDown); tabControl1不会更改页面。表单的KeyUp和tabControl1正常启动。您不需要扩展TabContro

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

当我按下左键或右键时,选项卡页面会改变,我希望禁用tabcontrol键盘导航


有可能做到这一点吗?

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

tabControl1.KeyDown+=new KeyEventHandler(tabControl1_KeyDown);

tabControl1不会更改页面。表单的KeyUp和tabControl1正常启动。

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

tabControl1.KeyDown+=new KeyEventHandler(tabControl1_KeyDown);

tabControl1不会更改页面。表单和tabControl1的KeyUp正常启动。

我的建议是,您只需在表单级别抓取这些键,然后通过返回true将Handled属性设置为true,这样控件就不会按键

将此方法添加到表单中:


我的建议是,您只需在表单级别获取这些键,然后通过返回true将Handled属性设置为true,这样控件就不会按键

将此方法添加到表单中:


我想你正在寻找这个

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

我想你正在寻找这个

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

您是否考虑过继承控件,然后赋予它您自己的功能?您能在表单级别处理这些东西吗?我在表单级别管理“东西”,我使用表单的键控,但当我按left或right时,选项卡会更改页面。您不清楚为什么要这样做。您想完全禁用导航,还是想将光标键用于其他用途?别忘了其他改变所选选项卡的按键。你是否考虑过继承控件,然后赋予它自己的功能?你能在表单级别处理这些东西吗?我在表单级别管理“东西”,我使用表单的keyup,但当我按left或right时,选项卡会更改页面。不太清楚您为什么要这样做。您想完全禁用导航,还是想将光标键用于其他用途?不要忘记其他改变所选选项卡的按键。它工作正常,但也会阻止子组件中的事件处理,因为它们的父组件是先处理的。因此,如果您需要处理子级中的事件,例如DataGridView中的箭头导航,则需要触发新事件,子级必须订阅此事件并处理它。另一个选项是附加条件,例如Controlsender.Focused&&e.KeyCode==Keys.Left | | e.KeyCode==Keys.Right,但这仅在所有子组件都在处理事件时有效。它工作正常,但也会阻止子组件中的事件处理,因为它们的父组件是先处理的。因此,如果您需要处理子级中的事件,例如DataGridView中的箭头导航,则需要触发新事件,子级必须订阅此事件并处理它。另一个选项是附加条件,例如Controlsender.Focused&&e.KeyCode==Keys.Left | | e.KeyCode==Keys.Right,但这仅在所有子组件都在处理事件时才有效。