如何隐藏键盘在WinRT的代码

本文关键字:WinRT 代码 键盘 何隐藏 隐藏 | 更新日期: 2023-09-27 17:50:31

在我的winRT c#应用程序中,我有一个文本框,当文本框被禁用时,可视键盘必须隐藏。但它并没有像预期的那样工作。

<Page
x:Class="App2.MainPage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="using:App2"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d">
<Grid Background="{StaticResource ApplicationPageBackgroundThemeBrush}">
    <TextBox HorizontalAlignment="Left" Margin="458,60,0,0" TextWrapping="Wrap" Text="TextBox" VerticalAlignment="Top" Height="98" Width="389" KeyUp="TextBox_KeyUp_1"/>
</Grid>

c#

private void TextBox_KeyUp_1(object sender, KeyRoutedEventArgs e)
        {
            if (e.Key == Windows.System.VirtualKey.Enter)
                (sender as TextBox).IsEnabled = false;
        }

如何隐藏键盘在WinRT的代码

这是一个示例代码,您可以对照您的代码

尝试通过this:

将焦点放在另一个元素上
    Descendents(MainFrame).OfType<Button>().FirstOrDefault().Focus(FocusState.Pointer);

    public static IEnumerable<DependencyObject> Descendents(DependencyObject root)
    {
        int count = VisualTreeHelper.GetChildrenCount(root);
        for (int i = 0; i < count; i++)
        {
            DependencyObject child = VisualTreeHelper.GetChild(root, i);
            yield return child;
            foreach (DependencyObject descendent in Descendents(child))
                yield return descendent;
        }
    }

在我的例子中,我有一个带有几个TextBox字段的表单。在其中一个程序中,我不希望应用程序显示数字键盘。

为了防止这种情况,我指定了属性IsReadOnly="True"。

我使用了IsReadOnly属性而不是IsEnabled="False",因为IsEnabled禁用了tap事件,并且当我们在控件之间tab时它不会停止。

<TextBox Name="tbx" Style="{StaticResource TextBoxDefaultStyle}" TabIndex="13" IsReadOnly="True" />