我正在尝试以编程方式手动激发WPF控件上的MouseLeftButtonDown事件,因为我使用的是Microsoft Surface SDK,它不激发MouseLeftButtonDown事件,而是激发ContactDown事件。基本上,在处理ContactDown事件时,我试图将MouseLeftButtonDown事件下推到控件上,以激发控件上的正确行为。
我猜我必须以某种方式在控件上使用RaiseEvent方法来对MouseButtonEventArgs执行此操作,但我在找出参数时遇到了一些问题。
提前感谢您的帮助!
发布于 2010-06-14 05:58:20
您可以使用Win32互操作欺骗鼠标和按键事件。研究MSDN上的SendInput函数。
请注意,这将导致系统和其他应用程序认为鼠标实际上是被单击的。如果您只想启动一个WPF事件,请尝试RaiseEvent( new RoutedEventArgs( UIElement.MouseLeftButtonDownEvent ) )。
发布于 2010-06-14 04:49:21
希望触发控件中的某个事件通常是代码中存在设计问题的指示器。事件处理程序应该触发行为,而不是执行行为。我建议您将执行由MouseLeftButtonDown事件处理程序触发的操作的代码移到一个单独的方法中。然后,可以从ContactDown事件处理程序调用相同的方法。
发布于 2011-12-15 23:00:22
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,
};这就是我在测试代码中触发事件的方式。
https://stackoverflow.com/questions/3033839
复制相似问题