none
如何在不点击textbox的情况下,叫出虚拟键盘? RRS feed

  • 问题

  • 我有一个button 和一个textbox,现在需求,按下button的时候textbox获得焦点,并能够叫出虚拟键盘,使用textbox.Focus(FocusState.Pointer);,可以使得textbox获得焦点,但是没有叫出虚拟键盘,请教我该如何做?
    2012年4月10日 3:45

答案

  • 您好!

    Metro应用无法通过编程方式调出虚拟键盘,尽管你可以通过编程方式让textbox获取焦点。

    如果通过焦点改变这种编程方式即能调出虚拟键盘,会使得虚拟键盘在用户未预期的情况下调出。这会破坏用户体验。

    尤其是,许多应用设置了缺省输入焦点,例如一些网页上的搜索输入框。

    虚拟键盘只能通过以下三种方式操纵:

    • Accessibility properties from UI Automation (UIA)
    • User tap
    • Focus changes

    IHM (Input Hosting Manager)会根据特定属性设置及相关条件,控制虚拟键盘的状态。对于标准的Windows输入控件,你无需作任何设置。对于自定义控件,你需要在使用时作一些属性设置。

    请参阅 Input Hosting Manager and the Touch Keyboard,以了解更多详情。


    Best wishes,


    Robin [MSFT]
    MSDN Community Support | Feedback to us
    Get or Request Code Sample from Microsoft
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.

    2012年4月12日 8:48
    版主
  • 做个自定义按钮,实现UIA的接口就能弹出键盘。D2D有个UIA的例子。


    C++ DX11

    2012年4月15日 16:53
  • 做个自定义按钮,实现UIA的接口就能弹出键盘。D2D有个UIA的例子。


    C++ DX11


    看到这,我想到了, 你完全可以根据这个例子: http://code.msdn.microsoft.com/windowsapps/Touch-keyboard-sample-43532fda 去实现自定义按钮,虽然将焦点移到TextBox不能触发显示Touch Keyboard 但是自定义按钮是可以呼出的。

    Bob Bao [MSFT]
    MSDN Community Support | Feedback to us

    2012年4月17日 5:24
    版主

全部回复

  • 您好!

    Metro应用无法通过编程方式调出虚拟键盘,尽管你可以通过编程方式让textbox获取焦点。

    如果通过焦点改变这种编程方式即能调出虚拟键盘,会使得虚拟键盘在用户未预期的情况下调出。这会破坏用户体验。

    尤其是,许多应用设置了缺省输入焦点,例如一些网页上的搜索输入框。

    虚拟键盘只能通过以下三种方式操纵:

    • Accessibility properties from UI Automation (UIA)
    • User tap
    • Focus changes

    IHM (Input Hosting Manager)会根据特定属性设置及相关条件,控制虚拟键盘的状态。对于标准的Windows输入控件,你无需作任何设置。对于自定义控件,你需要在使用时作一些属性设置。

    请参阅 Input Hosting Manager and the Touch Keyboard,以了解更多详情。


    Best wishes,


    Robin [MSFT]
    MSDN Community Support | Feedback to us
    Get or Request Code Sample from Microsoft
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.

    2012年4月12日 8:48
    版主
  • 移焦点到TextBox上并不会自动弹出虚拟键盘。我也尝试用了UI Automation等方法,也没有效果。


    Bob Bao [MSFT]
    MSDN Community Support | Feedback to us

    2012年4月12日 9:52
    版主
  • 做个自定义按钮,实现UIA的接口就能弹出键盘。D2D有个UIA的例子。


    C++ DX11

    2012年4月15日 16:53
  • 做个自定义按钮,实现UIA的接口就能弹出键盘。D2D有个UIA的例子。


    C++ DX11


    看到这,我想到了, 你完全可以根据这个例子: http://code.msdn.microsoft.com/windowsapps/Touch-keyboard-sample-43532fda 去实现自定义按钮,虽然将焦点移到TextBox不能触发显示Touch Keyboard 但是自定义按钮是可以呼出的。

    Bob Bao [MSFT]
    MSDN Community Support | Feedback to us

    2012年4月17日 5:24
    版主