【问题标题】:C# Alt Key problemsC# Alt键问题
【发布时间】:2015-07-29 22:45:46
【问题描述】:

我对在 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 键似乎也完全失效了,不再像我编写的那样执行 ((doing something)) 的任务。

有没有什么方法可以禁用 Alt 键的默认功能而不使其成为非功能键?

【问题讨论】:

  • 是的,Alt 键有一个专用功能。它用于鼓乐,激活程序的菜单。嗯,这回答了一个问题,当你不告诉我们“做某事”可能是什么时,另一个问题是不可能进行逆向工程的。

标签: c# key overriding alt


【解决方案1】:

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

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

    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);
    }

【讨论】:

    猜你喜欢
    • 2019-08-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-12-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-14
    相关资源
    最近更新 更多