首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >以编程方式触发MouseLeftButtonDown事件

以编程方式触发MouseLeftButtonDown事件
EN

Stack Overflow用户
提问于 2010-06-14 04:44:35
回答 4查看 19.9K关注 0票数 8

我正在尝试以编程方式手动激发WPF控件上的MouseLeftButtonDown事件,因为我使用的是Microsoft Surface SDK,它不激发MouseLeftButtonDown事件,而是激发ContactDown事件。基本上,在处理ContactDown事件时,我试图将MouseLeftButtonDown事件下推到控件上,以激发控件上的正确行为。

我猜我必须以某种方式在控件上使用RaiseEvent方法来对MouseButtonEventArgs执行此操作,但我在找出参数时遇到了一些问题。

提前感谢您的帮助!

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2010-06-14 05:58:20

您可以使用Win32互操作欺骗鼠标和按键事件。研究MSDN上的SendInput函数。

请注意,这将导致系统和其他应用程序认为鼠标实际上是被单击的。如果您只想启动一个WPF事件,请尝试RaiseEvent( new RoutedEventArgs( UIElement.MouseLeftButtonDownEvent ) )

票数 6
EN

Stack Overflow用户

发布于 2010-06-14 04:49:21

希望触发控件中的某个事件通常是代码中存在设计问题的指示器。事件处理程序应该触发行为,而不是执行行为。我建议您将执行由MouseLeftButtonDown事件处理程序触发的操作的代码移到一个单独的方法中。然后,可以从ContactDown事件处理程序调用相同的方法。

票数 5
EN

Stack Overflow用户

发布于 2011-12-15 23:00:22

代码语言:javascript
复制
var grid = new Grid();            

int timestamp = new TimeSpan(DateTime.Now.Ticks).Milliseconds;
const MouseButton mouseButton = MouseButton.Left;
var mouseDownEvent =
   new MouseButtonEventArgs(Mouse.PrimaryDevice, timestamp, mouseButton) {
       RoutedEvent = UIElement.MouseLeftButtonDownEvent,
       Source = grid,
   };

这就是我在测试代码中触发事件的方式。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3033839

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档