在Control.KeyUp事件检测问题Alt键 [英] Problems Detecting Alt Key on the Control.KeyUp event

查看:235
本文介绍了在Control.KeyUp事件检测问题Alt键的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个的KeyDown和KeyUp事件控制,如下图所示。我遇到的问题是,'X'是的KeyDown真实的,但总是的KeyUp FALSE。我试图检测Alt键(正如你可能已经猜到了)。



有没有,我不知道gottcha。我的意思是,当我按ALT检测就OK了,但是,KEYUP它是假的。



任何建议/想法



感谢

 私人无效MyControl_KeyDown(对象发件人,发送KeyEventArgs E)
{
布尔X;
X =((int)的(e.KeyData&放大器;!Keys.Alt)= 0);
X =(e.KeyData&安培; Keys.Alt)== Keys.Alt;
X = e.Alt;
}
私人无效MyControl_KeyUp(对象发件人,发送KeyEventArgs E)
{
布尔X;
X =((int)的(e.KeyData&放大器;!Keys.Alt)= 0);
X =(e.KeyData&安培; Keys.Alt)== Keys.Alt;
X = e.Alt;
}


解决方案

您想检测Alt + [字母]事件?是这样的,试试这个:

 私人无效YourControl_KeyDown(对象发件人,发送KeyEventArgs E)
{
如果((e.Alt)及(e.KeyCode == Keys.X))
{
MessageBox.Show(ALT-X按下);
}
}






对于刚刚Alt键,试试这个:

 私人无效YourControl_KeyDown(对象发件人,发送KeyEventArgs E)
{
如果(e.KeyCode == Keys.Menu)
{
// YourCode
e.Handled = TRUE;
}
}

私人无效YourControl_KeyUp(对象发件人,发送KeyEventArgs E)
{
如果(e.KeyData == Keys.Menu)
{
// YourCode
e.Handled = TRUE;
}
}


I have a control with KeyDown and KeyUp events as shown below. The problem I am having is that 'x' is TRUE in KeyDown but always FALSE in KeyUp. I am trying to detect the Alt key (as you may have guessed).

Is there a gottcha that I don't know. I mean, when I press Alt it detects it ok but on keyup it's false.

Any suggestions/ideas

Thanks

    private void MyControl_KeyDown(object sender, KeyEventArgs e)
    {
        bool x;
        x = ((int) (e.KeyData & Keys.Alt) != 0);
        x = (e.KeyData & Keys.Alt) == Keys.Alt;
        x = e.Alt;
    }
    private void MyControl_KeyUp(object sender, KeyEventArgs e)
    {
        bool x;
        x = ((int) (e.KeyData & Keys.Alt) != 0);
        x = (e.KeyData & Keys.Alt) == Keys.Alt;
        x = e.Alt;
    }

解决方案

Are you trying to detect an Alt+[letter] event? Is so, try this:

        private void YourControl_KeyDown(object sender, KeyEventArgs e)
        {
          if((e.Alt) & (e.KeyCode  == Keys.X))
          {
            MessageBox.Show("Alt-X pressed");
          }
        }


For just Alt, try this:

    private void YourControl_KeyDown(object sender, KeyEventArgs e)
    { 
        if (e.KeyCode  == Keys.Menu)
        {
            //YourCode
            e.Handled = true;
        }
    }

    private void YourControl_KeyUp(object sender, KeyEventArgs e)
    { 
        if (e.KeyData == Keys.Menu)
        {
            //YourCode
            e.Handled = true;
        }
    }

这篇关于在Control.KeyUp事件检测问题Alt键的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆