C#Alt Key问题

时间:2015-07-29 22:45:46

标签: c# key override alt

我对在C#中使用Alt键有一些疑问。

这是我的代码:

switch (e.KeyCode)
{
    case Keys.Menu:
        ((do something))
        break;
}

如果我理解正确,Keys.Alt用于组合键,而Keys.Menu用于检测Alt键的简单按键。我不打算组合键,所以我使用的是Keys.Menu。我觉得奇怪的是,对于Shift,有一个Keys.ShiftKey,但对于Alt,它叫做Keys.Menu。为什么不把它称为Keys.AltKey?混乱!

无论如何,代码工作正常。但是,似乎有Alt键的默认功能。例如,当我在文档或其他内容中键入内容时,按Alt键,插入点光标将消失,就像取消选择当前窗口或任务一样。

这个Alt键的默认功能对我的程序有问题,所以我做了一些搜索,发现以下代码是为了禁用它:

    protected override bool ProcessDialogKey(Keys keyData)
    {
        if ((keyData & Keys.Alt) == Keys.Alt)
            return true;
        else
            return base.ProcessDialogKey(keyData);
    }

输入此代码后,Alt键的默认功能已被禁用。但是,似乎Alt键也变得完全没有功能,不再像我编写的那样执行(做某事)的任务。

有没有办法禁用Alt键的默认功能而不会导致它成为非功能键?

1 个答案:

答案 0 :(得分:0)

不知道你在这里想做什么......

...为什么你不能在返回真实之前执行你的“某事”?

    protected override bool ProcessDialogKey(Keys keyData)
    {
        if ((keyData & Keys.Alt) == Keys.Alt)
        {
            Console.WriteLine("Alt");

            // ... call something from right here! ...

            return true;
        }

        return base.ProcessDialogKey(keyData);
    }