在Control.KeyUp事件上检测Alt键时出现问题

aba*_*eel 2 c# keyboard events

我有一个KeyDown和KeyUp事件的控件,如下所示.我遇到的问题是KeyDown中的'x'为TRUE,而KeyUp中的'x'总是为FALSE.我正在尝试检测Alt键(您可能已经猜到了).

有没有我不知道的gottcha.我的意思是,当我按下Alt时它会检测到它没问题但是在keyup上它是假的.

任何建议/想法

谢谢

    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;
    }
Run Code Online (Sandbox Code Playgroud)

blu*_*der 6

您是否尝试检测Alt + [letter]事件?是这样,试试这个:

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

对于只有Alt,试试这个:

    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;
        }
    }
Run Code Online (Sandbox Code Playgroud)