【问题标题】:vb.net or c#.net console.readkey shift+number charsvb.net 或 c#.net console.readkey shift+number chars
【发布时间】:2013-11-12 17:58:49
【问题描述】:

我在控制台上获取 shift+数字字符的输入击键的正确代码时遇到了一些麻烦。例如,使用:

cki = Console.ReadKey(True)
Console.WriteLine("You pressed the '{0}' key.", cki.Key)

如果我按 shift+2,我希望得到 ascii 64(对于“@”字符),但我得到的是 50(对于“2”字符)。

现在,我知道您可以获得按键的修饰符,但这意味着我必须为这样的按键编写所有特殊情况,这似乎不正确。

我需要这个功能,或者类似的功能,因为它能够在按键被按下时读取它们,而不需要按 Enter,否则我只需要使用 console.read。我肯定错过了什么。谁能告诉我我错过了什么?

【问题讨论】:

    标签: c# vb.net ascii console.readkey


    【解决方案1】:

    您正在寻找 KeyChar property,它返回实际字符​​而不是按下的物理键。
    您可能希望将其转换为 int

    【讨论】:

    • 看起来多一点探索就可以解决它,那么!累了就不要写代码,这是这里的外卖课程 =) 非常感谢您为我指明了正确的方向!
    【解决方案2】:

    区分键和字符非常重要。世界上任何地方的钥匙都是一样的,左边第一排的那个。您可以依靠该密钥始终生成 ConsoleKey.D2

    然而,字符非常不同,它很大程度上取决于活动的键盘布局。北美用户按下 Shift+2。一位法国用户按下 AltGr+0。德国用户按 AltGr+Q。西班牙用户按 AltGr+2。等等。

    如果您只关心键然后使用 ConsoleKeyInfo.Key,您可以对所有非键入键(例如功能键)执行此操作。也许是典型的游戏 WASD 键。如果您只关心字符,例如@,则使用 ConsoleKeyInfo.KeyChar。

    【讨论】:

    • 一个很好的观点,一个受庇护的大学生经常认为是理所当然的 =)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-11-03
    • 2010-09-24
    • 1970-01-01
    • 1970-01-01
    • 2021-08-12
    • 2017-11-14
    • 1970-01-01
    相关资源
    最近更新 更多