2013-03-14 72 views
1

我的表单中有一个tabcontrol,我需要使用keyup事件来管理一些事情。c#使用tabcontrol禁用箭头导航

当我按左或右按钮,标签页改变,我希望禁用tabcontrol键盘导航。

这是可能的吗?

+0

你有没有考虑继承控件,然后给它自己的功能? – LukeHennerley 2013-03-14 12:55:45

+0

你可以在'Form'级别处理这些'somethings'吗? – 2013-03-14 12:59:13

+0

我在表单级别管理'有些事情',我使用表单的键入,但是当我按左或右时,选项卡更改页面 – ghiboz 2013-03-14 13:03:34

回答

3

您不需要扩展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不改变页面。表单和tabControl1的KeyUp通常会触发。

+0

谢谢!这工作正常! – ghiboz 2013-03-14 14:41:34

0

我的建议是,你根本抢在Form级别的密钥和(通过返回true),以便控制不会拿到钥匙按Handled属性设置为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); 
}