C# 在keyup上触发mouseup事件-WPF
我的问题很简单。是否可以在WPF中分别在keyup和keydown事件上触发mouseup和mousedown 在我的自定义控件中,我有一组用于鼠标下移和鼠标上移的事件处理程序。如果用户尝试按我的自定义按钮上的空格键,我希望触发相同的操作C# 在keyup上触发mouseup事件-WPF,c#,wpf,events,event-handling,C#,Wpf,Events,Event Handling,我的问题很简单。是否可以在WPF中分别在keyup和keydown事件上触发mouseup和mousedown 在我的自定义控件中,我有一组用于鼠标下移和鼠标上移的事件处理程序。如果用户尝试按我的自定义按钮上的空格键,我希望触发相同的操作 private void CustomButton_MouseDown(object sender, MouseButtonEventArgs e) { eventlabel.Content = "Mousedown event
private void CustomButton_MouseDown(object sender, MouseButtonEventArgs e)
{
eventlabel.Content = "Mousedown event Triggered";
}
private void CustomButton_MouseUp(object sender, MouseButtonEventArgs e)
{
eventlabel.Content = "MouseUp event Triggered";
}
private void CustomButton_KeyDown(object sender, KeyEventArgs e)
{
if (e.Key == Key.Space)
{
//Need to trigger all the handlers of mousedown
}
}
private void CustomButton_KeyUp(object sender, KeyEventArgs e)
{
if (e.Key == Key.Space)
{
//Need to trigger all the handlers of mouseup
}
}
可以使用RaiseEvent(EventArgs)在所有UIElements中引发事件。鼠标按钮argseventsargs可在KeyDown事件处理程序中使用,如下所示:
MouseDevice mouseDevice = Mouse.PrimaryDevice;
MouseButtonEventArgs mouseButtonEventArgs = new MouseButtonEventArgs(mouseDevice, 0, MouseButton.Left);
mouseButtonEventArgs.RoutedEvent = Mouse.MouseDownEvent;
mouseButtonEventArgs.Source = this;
RaiseEvent(mouseButtonEventArgs);
(修改后的例子)托拜厄斯提到的答案对我很有用。但是,它需要一些调整
elementName.RaiseEvent(new MouseButtonEventArgs(Mouse.PrimaryDevice, 0, MouseButton.Left)
{
RoutedEvent = Mouse.MouseDownEvent,
Source = this,
});
参考是不是在尝试外部事件后出现了什么错误?你是在尝试实现类似的结果吗?你需要模拟鼠标事件还是只在事件处理程序中执行代码?如果是后者,只需将其移动到单独的方法并调用它。我有一套鼠标按下和鼠标上升的事件处理程序。如果用户按下我的自定义按钮上的空格键,我希望触发相同的操作。