Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在keyup上触发mouseup事件-WPF_C#_Wpf_Events_Event Handling - Fatal编程技术网

C# 在keyup上触发mouseup事件-WPF

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

我的问题很简单。是否可以在WPF中分别在keyup和keydown事件上触发mouseup和mousedown

在我的自定义控件中,我有一组用于鼠标下移和鼠标上移的事件处理程序。如果用户尝试按我的自定义按钮上的空格键,我希望触发相同的操作

    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,
});

参考是不是在尝试外部事件后出现了什么错误?你是在尝试实现类似的结果吗?你需要模拟鼠标事件还是只在事件处理程序中执行代码?如果是后者,只需将其移动到单独的方法并调用它。我有一套鼠标按下和鼠标上升的事件处理程序。如果用户按下我的自定义按钮上的空格键,我希望触发相同的操作。