在标准 .NET 中,存在 ToAscii/ToUnicode 和 MapVirtualKey 函数来处理此功能,但似乎尚未将等效函数或库引入 Metro/WinRT 中。如果 Metro/WinRT 中实际上没有公开的等效函数或库,那么自定义文本输入框将很难在非美国国家/地区推向市场。
具体示例:在我的自定义控件中,如果法语键盘用户按下 è、ù、é 或 à 键,它们将无法翻译为正确的字符。例如,è 使用 VirtualKey.Number7 的扫描代码,据我所知,没有办法知道键盘布局,也没有简单的方法可以根据当前键盘布局转换该扫描代码。
有人有这方面的信息吗?
我想这取决于你在寻找什么。如果您正在寻找简单的英文字母或数字,您可以简单地执行以下操作:
private static char? ToChar(VirtualKey key, bool shift)
{
// convert virtual key to char
if (32 == (int)key)
return ' ';
VirtualKey search;
// look for simple letter
foreach (var letter in "ABCDEFGHIJKLMNOPQRSTUVWXYZ")
{
if (Enum.TryParse<VirtualKey>(letter.ToString(), out search) && search.Equals(key))
return (shift) ? letter : letter.ToString().ToLower()[0];
}
// look for simple number
foreach (var number in "1234567890")
{
if (Enum.TryParse<VirtualKey>("Number" + number.ToString(), out search) && search.Equals(key))
return number;
}
// not found
return null;
}
祝你好运!
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)