在标准.NET中,存在ToasCi/TunCiCod和MapVirtualKey函数来处理这个功能,尽管它似乎没有等效的函数或库没有被引入到Metry/WiRT中。如果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;
}
祝你好运!