我的表单中有一个 tabcontrol,我需要使用 keyup 事件来管理一些东西。
当我按下左键或右键时,标签页会发生变化,我希望禁用 tabcontrol 键盘导航。
有可能这样做吗?
我的表单中有一个 tabcontrol,我需要使用 keyup 事件来管理一些东西。
当我按下左键或右键时,标签页会发生变化,我希望禁用 tabcontrol 键盘导航。
有可能这样做吗?
您不需要扩展 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 正常触发。
我的建议是您只需在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);
}