如何测试ConsoleKeyInfo是否是产生字符的键

时间:2014-01-02 23:19:27

标签: vb.net console key

我确信有一种简单的方法可以做到这一点,但我还没有找到任何东西。我正在尝试在VB.NET中编写代码,将密钥输入为ConsoleKeyInfo,然后运行一个代码块,如果密钥通常产生一个字符(A,5,:,Enter,Tab,¬等全部计数)。如果键是箭头键,winkey,修饰键等,则不应计算。这是我目前得到的解决方案,不太理想:

If Char.IsLetterOrDigit(CKI.KeyChar) Or Char.IsPunctuation(CKI.KeyChar) Or Char.IsWhiteSpace(CKI.KeyChar) Or Char.IsSymbol(CKI.KeyChar) Then
    [Run code]
End If

1 个答案:

答案 0 :(得分:0)

您可以将要过滤的密钥放入List(Of ConsoleKey)。然后只需查看您的列表中是否包含ConsoleKeyInfo的.Key属性:

Dim keylist As List(Of ConsoleKey) = New List(Of ConsoleKey)({ConsoleKey.DownArrow,
                                                                ConsoleKey.UpArrow,
                                                                ConsoleKey.LeftArrow,
                                                                ConsoleKey.RightArrow,
                                                                ConsoleKey.LeftWindows,
                                                                ConsoleKey.RightWindows})
Dim test As ConsoleKeyInfo = Console.ReadKey
If Not keylist.Contains(test.Key) Then
    'run code
End If

还有一个用于特殊组合键的枚举,例如control-escape