加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – 键盘键本地化

发布时间:2020-12-15 07:40:37 所属栏目:百科 来源:网络整理
导读:我正在为我的应用程序的快捷方式设置菜单.应用程序支持两种语言(英语和德语),因此我需要能够显示文化依赖的字符串.例如. Ctrl Ins表示“en-US”,而Strg Einfg表示“de-DE”. 考虑到可能的密钥数量不是很大,我可以为每个密钥定义资源,但我认为这个问题并不罕
我正在为我的应用程序的快捷方式设置菜单.应用程序支持两种语言(英语和德语),因此我需要能够显示文化依赖的字符串.例如. Ctrl Ins表示“en-US”,而Strg Einfg表示“de-DE”.

考虑到可能的密钥数量不是很大,我可以为每个密钥定义资源,但我认为这个问题并不罕见,并且应该有内置功能或知道库用于此目的.

我从System.Windows.Forms.KeysConverter尝试过ConvertToString():

var kc = new System.Windows.Forms.KeysConverter();
var de = kc.ConvertToString(null,new CultureInfo("de-DE"),Keys.Insert);
Console.WriteLine(de);

System.Windows.Input.KeyGesture中的GetDisplayStringForCulture():

System.Windows.Input.KeyGesture kg = new KeyGesture(Key.Insert);
var de = kg.GetDisplayStringForCulture(new CultureInfo("de-AT"));
Console.WriteLine(de);

但他们两人分别返回英文“Ins”和“Insert”.

所以基本上我正在寻找接受某种标准密钥类和文化并返回各自本地化字符串的方法.

解决方法

我没有时间自己测试它,但你可以尝试下面的方法

参考这两个帖子
(美国英语)
https://msdn.microsoft.com/en-us/library/system.windows.forms.keys(v=vs.110).aspx
(德语)
https://msdn.microsoft.com/de-de/library/system.windows.forms.keys(v=vs.110).aspx

Strg Einfg与之相当

'VB
If E.KeyCode = (Keys.Control Or Keys.Insert) Then...

//C#
if (e.KeyCode == (Keys.Control | Keys.Insert)) {...

要显示当前的输入语言,您可以尝试

MsgBox(InputLanguage.CurrentInputLanguage.LayoutName)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读