`

winform 方向键焦点丢失问题(keydown event not work)

    博客分类:
  • C#
 
阅读更多

在项目中遇到了,方向键不能被keydown event 捕捉的问题

 

下面是解决方案

 

button1.PreviewKeyDown +=new PreviewKeyDownEventHandler(button1_PreviewKeyDown);

button1.KeyDown += new KeyEventHandler(button1_KeyDown);

 

1.取消方向键丢失焦点的问题

 

protected override bool ProcessDialogKey(Keys keyData)
{
    switch (keyData)
    {
        case Keys.Left:
            // 处理代码
            break;
        case Keys.Right:
             // 处理代码
            break;
        case Keys.Up:
            // 处理代码
            break;
        case Keys.Down:
            // 处理代码
            break;
    }
    return base.ProcessDialogKey(keyData);
}

 

可以直接return false 处理

 

 

protected override bool ProcessDialogKey(Keys keyData)
{
    switch (keyData)
    {
        case Keys.Left:
        case Keys.Right:
        case Keys.Up:
        case Keys.Down:
           return false;
    }
    return base.ProcessDialogKey(keyData);
}
 

 

2.如果上面不好使的话,可能是因为winform方向键被占用,无法在下层使用,需要被激活

 

 

private void button1_PreviewKeyDown(object sender, PreviewKeyDownEventArgs e)
{
    switch (e.KeyCode)
    {
        case Keys.Down:
        case Keys.Up:
            e.IsInputKey = true;
            break;
    }
}

 

 

0
0
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics