【发布时间】:2014-08-24 19:56:02
【问题描述】:
我想在用户开始在我的 Windows 8.1 应用商店应用中输入时激活一个文本框。
我尝试处理Page 的KeyDown 事件,类似于以下代码:
private void pageRoot_KeyDown(object sender, KeyRoutedEventArgs e)
{
if (SearchBox.FocusState == Windows.UI.Xaml.FocusState.Unfocused)
{
string pressedKey = e.Key.ToString();
SearchBox.Text = pressedKey;
SearchBox.Focus(Windows.UI.Xaml.FocusState.Keyboard);
}
}
但问题是e.Key.ToString() 总是返回按下键的大写英文字符,而用户可能正在输入另一种语言。例如,D 键在波斯语键盘中输入 ی,用户可能想要输入波斯语,但 e.Key.ToString() 仍将返回 D 而不是 ی。
我还尝试使该文本框始终聚焦(我的页面包含一些网格视图等,以及一个文本框),虽然此解决方案适用于 PC,但它使屏幕键盘始终出现在平板电脑上。
那么,我该怎么办?有什么方法可以在KeyDown 事件中获得准确输入的字符?
【问题讨论】:
-
您可以模拟控件上的按键,让它单独执行相应的逻辑。
-
@YoryeNathan 是否可以在 Windows 应用商店应用程序中使用?如果有,怎么做?
-
我不熟悉商店应用程序和限制。查看 SendKeys、SendInput 和 PostMessage 以查看它们是否适用。
-
@YoryeNathan 好像这些功能在商店应用中是不可用的。
-
看看这个 MSDN 论坛帖子是否有帮助 social.msdn.microsoft.com/Forums/en-US/…
标签: c# windows-8 windows-runtime windows-8.1