重音符号/波形符号键

时间:2015-03-17 19:43:01

标签: c# .net

我正在制作游戏,我想使用重音符(`)或代字号(〜)来表示某个按键事件。但是我无法找到此特定字符的ConsoleKey。 (我指的是Esc键下的键右侧)

如果有,那是什么名字?

如果它不存在,有没有办法让自己的?我尝试这样做是为了制作我自己的,但这会导致错误说明:Error 1 The expression being assigned to 'tilde' must be constant

const ConsoleKey tilde = (ConsoleKey) Convert.ToChar("`");

目前我正在调度我的活动:

// Fetch console keypress
ConsoleKey key = Console.ReadKey(true).Key;

// Dispatch events
switch (key) {

    // Pause / resume
    case ConsoleKey.Escape:
        togglePause();
        break;

    // Debug mode
    // This is where I would like to use the ` or ~ console key.
    case ConsoleKey.Spacebar:
        toggleDebug();
        break;
}

4 个答案:

答案 0 :(得分:4)

Convert.ToChar("``")不是常量表达式。这是一个将在运行时进行评估的方法调用。因此,此处无法使用const关键字。

您可以直接使用char来代替将字符串转换为char:

const ConsoleKey tilde = (ConsoleKey)'`';

然而,我只是说铸造不是解决方案。这将返回NumPad0,这肯定不是您所期望的。

正确的密钥是

ConsoleKey.Oem3

答案 1 :(得分:4)

我使用了一个简单的应用来弄明白:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Press any Key:");
            while(true)
            {
                var keyInfo = Console.ReadKey(true);
                var key = keyInfo.Key;
                Console.WriteLine(key.ToString());
            }
        }
    }
}

不明显;这是输出:

Press any Key:
Oem3

因此,波浪号键映射到ConsoleKey.Oem3。我也期待一个“Tilde”枚举值。

答案 2 :(得分:0)

以下代码可用于演示执行此操作所需的密钥:

case ConsoleKey.Oem3:
    Console.WriteLine("Found it");
    break;

这应该足以满足您的需求。

答案 3 :(得分:0)

在英式键盘上,`字符是Oem8(至少对我而言)