我的表单中有一个tabcontrol,我需要使用keyup事件来管理事情。
当我按向左或向右按钮时,标签页会改变,我希望禁用tabcontrol键盘导航。
可以这样做吗?
答案 0 :(得分:4)
您不需要扩展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正常触发。
答案 1 :(得分: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);
}
答案 2 :(得分:1)
我认为你正在寻找这个。
if (e.KeyCode == Keys.Tab)
{
//your logic
e.SuppressKeyPress();
}