我正在制作游戏,我想使用重音符(`)或代字号(〜)来表示某个按键事件。但是我无法找到此特定字符的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;
}
答案 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(至少对我而言)