获取键盘 C# 上的键数

Get the Number of Keys on Keyboard C#

我试图列出 WPF 列表框中的所有键:

foreach (Key key in Enum.GetValues(typeof(Key)))
            {
                lb.Items.Add(key.ToString());
            }

但这不是 return 键 (A,...,Escape,Enter)。它 return 编辑了 None,取消,返回,...

您可以获得 enum 个名称而不是值

foreach (string key in Enum.GetNames(typeof(Key)))
{
    lb.Items.Add(key);
}

或者您可以显示组合的名称和值。类似于 Visual Studio 显示的元数据。

System.Collections.IEnumerator keys = Enum.GetValues(typeof(Key)).GetEnumerator();
foreach (string key in Enum.GetNames(typeof(Key)))
{
    keys.MoveNext();
    lb.Items.Add(key + " = " + (int)keys.Current);
}

这里是使用纯 XAML

的解决方案
...
<Window.Resources>
    <ObjectDataProvider x:Key="KeysValues" MethodName="GetValues" ObjectType="{x:Type system:Enum}">
        <ObjectDataProvider.MethodParameters>
            <x:Type TypeName="Key"/>
        </ObjectDataProvider.MethodParameters>
    </ObjectDataProvider>
</Window.Resources>
<Grid>
    <ListBox ItemsSource="{Binding Source={StaticResource KeysValues}}"/>
</Grid>
...