【问题标题】:How to programmatically hide the keyboard如何以编程方式隐藏键盘
【发布时间】:2016-08-23 19:52:04
【问题描述】:

我有一个带有按钮的文本框(Telerik 的 RadTextBox 配置了操作)。 当用户按下 Action 时,会显示一个进度条,屏幕变暗,并且发生了一些神奇的事情。

我的问题是,由于该操作不会导致文本框失去焦点,因此屏幕键盘没有隐藏,并且一直覆盖一半屏幕。

我想以编程方式隐藏屏幕键盘,但不知道如何。

【问题讨论】:

  • 你不能强行将焦点设置在另一个控件上吗?
  • @KooKiz - 我可以,这就是我现在正在研究的,但我希望有一个真正的解决方案,而不是一个补丁。

标签: c# windows-phone


【解决方案1】:

只需将焦点设置到主页:

this.Focus();

这将聚焦一个不使用键盘的控件,从而隐藏键盘。不幸的是,键盘没有 API 可以隐藏它。

【讨论】:

  • @matthewsheets,欢迎来到不断变化的 API 和操作系统实现的世界!
  • 我刚刚在 Win 10 Mobile 上试用过,效果很好。也许他们再次更改了 API :p 等等,我收回它。现在它只适用于某些页面。看起来,页面上的第一个元素不能是输入字段,否则它将首先被自动选中,如果你调用 this.Focus() 并且键盘再次启动并运行
【解决方案2】:

请尝试在适当的位置禁用然后启用相关文本框(例如提交查询或触发操作后):

   TextBox.IsEnabled = false;
   TextBox.IsEnabled = true;

(通过https://stackoverflow.com/a/23905874/1963978

不干净,但可以完成工作(在 Windows 10 移动版中)。

【讨论】:

  • 丑陋,但在 Win10 上也可以使用 JavaScipt UWP 应用程序(that.control.disabled = true; that.control.disabled = false;)
【解决方案3】:

here lot 解决方案仅适用于 Textblock,但在我的情况下为 AutoCompleteBox

  <toolkit:AutoCompleteBox Name="autoComplateTxt"
                                             Grid.Row="4"
                                             Margin="15,5,2,10"
                                             Padding="0"
                                             Height="65"
                                             Text=""
                                             BorderThickness="1"
                                             BorderBrush="Black"
                                             VerticalAlignment="Center"
                                             
                                          DropDownClosed="autoComplateTxt_DropDownClosed"
                                              />
 private void autoComplateTxt_DropDownClosed(object sender, RoutedPropertyChangedEventArgs<bool> e)
    {
        this.Focus();
    }

【讨论】:

    猜你喜欢
    • 2011-02-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-12-06
    • 1970-01-01
    • 2018-08-12
    • 1970-01-01
    • 2020-07-07
    相关资源
    最近更新 更多