为什么触摸我的对象时会触发 Stylus 和 Mouse 事件?
Why are Stylus and Mouse events fired when touching my object?
我有一个 PushPin
对象,我已经连接了一些 Touch/Stylus/Mouse 事件:
pp.MouseDown += pp_MouseDown;
pp.TouchDown += pp_TouchDown;
pp.TouchUp += pp_TouchUp;
pp.StylusDown += pp_StylusDown;
pp.StylusUp += pp_StylusUp;
处理程序
void pp_MouseDown(object sender, MouseButtonEventArgs e)
{
PushPinUpOrDown(sender);
e.Handled = true;
}
private void pp_TouchDown(object sender, TouchEventArgs e)
{
var pushpin = (sender as Pushpin);
pushpin.CaptureTouch(e.TouchDevice);
e.Handled = true;
}
void pp_StylusDown(object sender, StylusDownEventArgs e)
{
var pushpin = (sender as Pushpin);
pushpin.CaptureStylus();
e.Handled = true;
}
void pp_StylusUp(object sender, StylusEventArgs e)
{
var pushpin = (sender as Pushpin);
e.Handled = true;
if (pushpin != null && e.StylusDevice.Captured == pushpin)
{
PushPinUpOrDown(sender);
pushpin.ReleaseStylusCapture();
}
}
void pp_TouchUp(object sender, TouchEventArgs e)
{
var pushpin = (sender as Pushpin);
e.Handled = true;
if (pushpin != null && e.TouchDevice.Captured == pushpin)
{
PushPinUpOrDown(sender);
pushpin.ReleaseTouchCapture(e.TouchDevice);
}
}
但是当我触摸我的 PushPin
时,首先会触发 StylusDown
事件,然后是 MouseDown
。我期望触发的 TouchDown
事件永远不会触发。
这是为什么?这是我的程序或显示器的问题吗?
我需要 Stylus 和 Touch 事件吗?
(我使用的是触控显示器,不是平板电脑或其他任何东西)
所以从 here 我得到了代码:
void pp_StylusDown(Object sender, StylusEventArgs e)
{
if (sender != null)
{
//Capture the touch device (i.e. finger on the screen)
e.StylusDevice.Capture(sender as Pushpin);
}
}
void pp_StylusUp(Object sender, StylusEventArgs e)
{
var device = e.StylusDevice;
if (sender != null && device.Captured == sender as Pushpin)
{
(sender as Pushpin).ReleaseStylusCapture();
PushPinUpOrDown(sender, true);
e.Handled = true;
}
}
它停止了 MouseDown
事件触发。主要原因(奇怪地)是从 pp_StylusDown
中删除 e.Handled = true
解决了问题
仍然无法解释触摸屏幕时触发手写笔事件的原因
我有一个 PushPin
对象,我已经连接了一些 Touch/Stylus/Mouse 事件:
pp.MouseDown += pp_MouseDown;
pp.TouchDown += pp_TouchDown;
pp.TouchUp += pp_TouchUp;
pp.StylusDown += pp_StylusDown;
pp.StylusUp += pp_StylusUp;
处理程序
void pp_MouseDown(object sender, MouseButtonEventArgs e)
{
PushPinUpOrDown(sender);
e.Handled = true;
}
private void pp_TouchDown(object sender, TouchEventArgs e)
{
var pushpin = (sender as Pushpin);
pushpin.CaptureTouch(e.TouchDevice);
e.Handled = true;
}
void pp_StylusDown(object sender, StylusDownEventArgs e)
{
var pushpin = (sender as Pushpin);
pushpin.CaptureStylus();
e.Handled = true;
}
void pp_StylusUp(object sender, StylusEventArgs e)
{
var pushpin = (sender as Pushpin);
e.Handled = true;
if (pushpin != null && e.StylusDevice.Captured == pushpin)
{
PushPinUpOrDown(sender);
pushpin.ReleaseStylusCapture();
}
}
void pp_TouchUp(object sender, TouchEventArgs e)
{
var pushpin = (sender as Pushpin);
e.Handled = true;
if (pushpin != null && e.TouchDevice.Captured == pushpin)
{
PushPinUpOrDown(sender);
pushpin.ReleaseTouchCapture(e.TouchDevice);
}
}
但是当我触摸我的 PushPin
时,首先会触发 StylusDown
事件,然后是 MouseDown
。我期望触发的 TouchDown
事件永远不会触发。
这是为什么?这是我的程序或显示器的问题吗?
我需要 Stylus 和 Touch 事件吗?
(我使用的是触控显示器,不是平板电脑或其他任何东西)
所以从 here 我得到了代码:
void pp_StylusDown(Object sender, StylusEventArgs e)
{
if (sender != null)
{
//Capture the touch device (i.e. finger on the screen)
e.StylusDevice.Capture(sender as Pushpin);
}
}
void pp_StylusUp(Object sender, StylusEventArgs e)
{
var device = e.StylusDevice;
if (sender != null && device.Captured == sender as Pushpin)
{
(sender as Pushpin).ReleaseStylusCapture();
PushPinUpOrDown(sender, true);
e.Handled = true;
}
}
它停止了 MouseDown
事件触发。主要原因(奇怪地)是从 pp_StylusDown
中删除 e.Handled = true
解决了问题
仍然无法解释触摸屏幕时触发手写笔事件的原因