none
Multi-Touch 高级操作中鼠标事件问题? RRS feed

  • 问题

  • WPF给用户控件加上高级触屏操作(Manipulation)缩放选择操作后,用户控件内部的鼠标事件不起作用了,

    如何解决:即可以对用户控件进行多点缩放移动,用户控件内部的鼠标事件也可以执行????? 

    2011年8月16日 2:21

答案

  • 看了代码,发现楼主有一个误解。其实触控消息本身只会去响应触控的事件,不会去调用鼠标的事件。所以用户在用手在点击一个按钮,其实发送给控件的是Touch消息,不是鼠标消息。按钮的click本身只会在MouseUp过程中被触发,但这个时候鼠标没有动,所以并不会触发Click事件。

    解决方法是,分别实现TouchDown/Up等Touch事件,然后和鼠标事件一样,调用同样的代码,这样就能做到鼠标和手指点击一样的效果了。

     


    Bob Bao [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.

    2011年8月16日 17:22
    版主
  • 对象,触控的高级操作为真时,鼠标事件是不被接收的,触发的触控事件,至于Touch和鼠标事件是兼容的,就看路由执行顺序而定了。

    2011年8月17日 17:03

全部回复

  • 触控事件和鼠标事件本身就是两套不同的消息事件响应。所以他们是互不干涉的。

    你在对控件缩放时,是如何进行的?是对控件本身做LayoutTransform 还是 RenderTranform?

    关于事件不触发有这以下几种可能:

    1. 事件路由被终止
    2. 点击测试对象被禁用点击测试
    3. 事件对象被覆盖
    4. 事件对像的响应区与实际内容区域不吻合

    至于你的情况,我们需要看下上下文内容,所以给点资料,这样我们还给你调试。

    P.S. 我个人不是很清楚 你所谓的 高级触屏操作 是什么意思? 是一个第三方的组件吗,还是仅仅是你的一个个人对于触控的描述。

     

    Sincerely,


    Bob Bao [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.

    2011年8月16日 9:08
    版主
  • 从问一下,

    目的:缩放、旋转、移动用户控件。用户控件内部的鼠标事件也可以正常执行。

    照着这个的方法做的,如果里面的图片换成用户控件,并且用户控件内有1个按钮。现在缩放旋转用户控件可以,问题是里面的按钮不能点击了没反应?

    http://www.cnblogs.com/gnielee/archive/2010/08/18/multi-touch-manipulatioin.html

    2011年8月16日 10:08
  • 看了代码,发现楼主有一个误解。其实触控消息本身只会去响应触控的事件,不会去调用鼠标的事件。所以用户在用手在点击一个按钮,其实发送给控件的是Touch消息,不是鼠标消息。按钮的click本身只会在MouseUp过程中被触发,但这个时候鼠标没有动,所以并不会触发Click事件。

    解决方法是,分别实现TouchDown/Up等Touch事件,然后和鼠标事件一样,调用同样的代码,这样就能做到鼠标和手指点击一样的效果了。

     


    Bob Bao [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.

    2011年8月16日 17:22
    版主
  • 也不一定啊,我单位就由一个触摸屏,触控的时候,首先执行的时mouse事件,然后才执行touch事件

    我们还专门测试过的

    另一个触摸屏就和你说的一样了

    button的click事件

    触摸屏不触发

    是正常的


    Hero
    2011年8月17日 2:28
  • 哈哈 ,硬件设备在触摸时生成鼠标消息, 看来是有这样的设备的。


    Bob Bao [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.

    2011年8月17日 2:54
    版主
  • 对象,触控的高级操作为真时,鼠标事件是不被接收的,触发的触控事件,至于Touch和鼠标事件是兼容的,就看路由执行顺序而定了。

    2011年8月17日 17:03