从字符到system.windows.forms.keys

本文关键字:forms keys windows system 字符 | 更新日期: 2023-09-27 18:19:51

是否有一种方法可以找出必须按下哪些键或键的组合才能获得特定字符。对于像"1"、"a"这样的字符来说很容易,但对于像"."、"_"这样的其他字符来说就不那么容易了或"ü"。知道吗?谢谢

从字符到system.windows.forms.keys

以下是"特殊字符"的完整列表。这些实际上是字符实体,其中为一个字符指定了特定的代码。

这主要用于HTML中,在HTML中,代码将提供序列,但在客户端,他们将看到字符实体。

这里有一个可能与您的答案重复的答案,如何从虚拟密钥代码转换为System.Windows.Forms.Keys

编辑这里还有另一个重复的字符,如".":如何将中的字符转换为等效的System.Windows.Input.Key枚举值?

感谢您发布的链接,我在这里发布了一个解决方案。输入是一个字符,输出是System.Windows.Forms.Keys的列表。第一个键是实际键,列表中的其他键(如果有)是修饰符键。

    [DllImport("user32.dll")]
    static extern short VkKeyScan(char ch);
    public static List<Keys> FromCharacterToKeys(char c)
    {
        var key = BitConverter.GetBytes(VkKeyScan(c));
        if (key[1] > 0)
        {
            var list = new List<Keys> {(Keys) key[0]};
            list.AddRange(ConvertModifierByte(key[1]));
            return list;
        }
        else
        {
            return new List<Keys> { (Keys)key[0] }; 
        }    
    }
    private static List<Keys> ConvertModifierByte(byte modifier)
    {
        switch ((short)modifier)
        {
            case 1:
                return new List<Keys> { Keys.Shift };
            case 2:
                return new List<Keys> { Keys.Control };
            case 4:
                return new List<Keys> { Keys.Alt };
            case 6:
                return new List<Keys> { Keys.Control, Keys.Alt };
            default:
                return new List<Keys> { Keys.None };
        }
    }