在 windows 的 uwp 应用程序中关闭软键盘
Turn off soft keyboard in uwp app for windows
我在手持设备上有一个 uwp 应用程序 运行 运行 windows 10. 手持设备有一个条形码扫描仪,应用程序的所有输入都是使用它进行的。所以我想防止当用户将焦点移动到任何文本框控件时出现键盘。
在很大程度上,焦点是通过编程方式处理的 - 我已经用 PreventKeyboardDisplayOnProgrammaticFocus=True
阻止了键盘在那些情况下出现。
但是用户有时确实需要自己移动焦点,而当他这样做时我找不到任何方法来阻止键盘出现。
我找到了有关上述编程焦点的文章,以及当用户在文本框中按下 enter 时隐藏键盘以及将控件的只读值设置为 true 的文章。但这些不适用于这种情况。我希望能够阻止它出现在这个应用程序中。
谁能给点建议?
我不确定是否有直接的方法来防止键盘出现。通过订阅 InputPane 的 事件,您肯定可以在键盘显示后将其隐藏:
InputPane.GetForCurrentView().Showing += (s, e) => (s as InputPane).TryHide();
但这看起来不太好。因此,我尝试了一种棘手的方法来实现您想要的 - 禁用 TextBox 进行命中测试,并在其下使用虚拟控件来设置编程焦点。正如我测试过的那样,它应该可以工作。样本 xaml:
<StackPanel Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
<Border Tapped="Border_Tapped" Background="Transparent">
<TextBox x:Name="myTextBox" Width="200" Height="100" Header="Enter:" PreventKeyboardDisplayOnProgrammaticFocus="True" IsHitTestVisible="False"/>
</Border>
<Button Margin="20" Content="Dummy to test focus"/>
</StackPanel>
以及后面的代码:
private void Border_Tapped(object sender, TappedRoutedEventArgs e)
{
myTextBox.Focus(FocusState.Programmatic);
}
我在手持设备上有一个 uwp 应用程序 运行 运行 windows 10. 手持设备有一个条形码扫描仪,应用程序的所有输入都是使用它进行的。所以我想防止当用户将焦点移动到任何文本框控件时出现键盘。
在很大程度上,焦点是通过编程方式处理的 - 我已经用 PreventKeyboardDisplayOnProgrammaticFocus=True
阻止了键盘在那些情况下出现。
但是用户有时确实需要自己移动焦点,而当他这样做时我找不到任何方法来阻止键盘出现。
我找到了有关上述编程焦点的文章,以及当用户在文本框中按下 enter 时隐藏键盘以及将控件的只读值设置为 true 的文章。但这些不适用于这种情况。我希望能够阻止它出现在这个应用程序中。 谁能给点建议?
我不确定是否有直接的方法来防止键盘出现。通过订阅 InputPane 的 事件,您肯定可以在键盘显示后将其隐藏:
InputPane.GetForCurrentView().Showing += (s, e) => (s as InputPane).TryHide();
但这看起来不太好。因此,我尝试了一种棘手的方法来实现您想要的 - 禁用 TextBox 进行命中测试,并在其下使用虚拟控件来设置编程焦点。正如我测试过的那样,它应该可以工作。样本 xaml:
<StackPanel Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
<Border Tapped="Border_Tapped" Background="Transparent">
<TextBox x:Name="myTextBox" Width="200" Height="100" Header="Enter:" PreventKeyboardDisplayOnProgrammaticFocus="True" IsHitTestVisible="False"/>
</Border>
<Button Margin="20" Content="Dummy to test focus"/>
</StackPanel>
以及后面的代码:
private void Border_Tapped(object sender, TappedRoutedEventArgs e)
{
myTextBox.Focus(FocusState.Programmatic);
}