none
WPF如何禁止手写笔输入面板弹出? RRS feed

  • 问题

  • Hi

    Win10中,WPF的部分控件,如Button/ScrollViewer/TextBox等能接收用户输入的控件

    当用手写笔在这些控件内点击时,会弹出手写笔输入面板,点击TextBox会弹出手写笔输入面板倒是没问题,但是点击一个button也会弹出手写笔输入面板就让人感到非常奇怪了,也影响用户的使用

    有没有什么方法能让这些控件在被点击时不弹出手写笔输入面板呢?

    Thanks

    2016年5月25日 10:33

全部回复

  • 补充

    把Button控件的Focusable属性设为false可以避免此问题,但是就不能通过tab键将焦点切换到该按钮上了

    是否有其它的方法呢?

    2016年5月26日 5:42
  • 没人有能回答吗?
    2016年5月30日 1:22
  • 您好 aaaluke,

    您可以试试WPF中为我们提供的手写笔事件StylusDown,响应这个事件并把Handled设置为true。我们还可以在事件的响应方法中写上我们期望的触发动作。

    <Button StylusDown="Button_StylusDown" />
    private void Button_StylusDown(object sender, StylusDownEventArgs e)
    {
        //您可以在这个写上,当手写笔点下的时候您想要做的动作。
        e.Handled = true;
    }
    Best Regards,
    Li Wang

    We are trying to better understand customer views on social support experience, so your participation in this interview project would be greatly appreciated if you have time. Thanks for helping make community forums a great place.
    Click HERE to participate the survey.

    2016年5月30日 5:40
  • 您好 aaaluke,

    您可以试试WPF中为我们提供的手写笔事件StylusDown,响应这个事件并把Handled设置为true。我们还可以在事件的响应方法中写上我们期望的触发动作。

    <Button StylusDown="Button_StylusDown" />
    private void Button_StylusDown(object sender, StylusDownEventArgs e)
    {
        //您可以在这个写上,当手写笔点下的时候您想要做的动作。
        e.Handled = true;
    }
    Best Regards,
    Li Wang

    We are trying to better understand customer views on social support experience, so your participation in this interview project would be greatly appreciated if you have time. Thanks for helping make community forums a great place.
    Click HERE to participate the survey.

    Hi,Wang

    按照你的方法还是会弹出手写笔输入框


    2016年5月31日 2:46
  • 您好 aaaluke,

    这可能跟您的手写笔相关,你还可以试试禁用手写笔。在窗体加载后之后以下方法即可。

    public static void DisableWPFTabletSupport()
    { 
        TabletDeviceCollection devices = System.Windows.Input.Tablet.TabletDevices;
        if (devices.Count > 0)
        {   
            Type inputManagerType = typeof(System.Windows.Input.InputManager);
            
            object stylusLogic = inputManagerType.InvokeMember("StylusLogic",
                        BindingFlags.GetProperty | BindingFlags.Instance | BindingFlags.NonPublic,
                        null, InputManager.Current, null);
    
            if (stylusLogic != null)
            {
                Type stylusLogicType = stylusLogic.GetType();
                
                while (devices.Count > 0)
                {
                    stylusLogicType.InvokeMember("OnTabletRemoved",
                            BindingFlags.InvokeMethod | BindingFlags.Instance | BindingFlags.NonPublic,
                            null, stylusLogic, new object[] { (uint)0 });
                }                
            }     
        }
    }
    
    Best Regards,
    Li Wang

    We are trying to better understand customer views on social support experience, so your participation in this interview project would be greatly appreciated if you have time. Thanks for helping make community forums a great place.
    Click HERE to participate the survey.

    2016年6月3日 5:47