首页 > 解决方案 > WPF 引发 DoubleClick 事件

问题描述

我有一个派生的类,WindowsFormsHost它监听 WinForms 鼠标事件。它适用于单击,但有什么方法可以触发双客户端事件?ClickCount是只读的,所以我无法设置它,并且提升Control.MouseDoubleClickEvent不会传播它。还有什么想法吗?

private void OnMouseDown(object sender, System.Windows.Forms.MouseEventArgs e) {
    MouseButton? wpfButton = ConvertToWpf(e.Button);
    if (!wpfButton.HasValue)
        return;

    RaiseEvent(new MouseButtonEventArgs(Mouse.PrimaryDevice, 0, wpfButton.Value) {
        RoutedEvent = Mouse.MouseDownEvent,
        Source = this
        //ClickCount = 2  // read-only
    });

    //RaiseEvent(new RoutedEventArgs() {  // won't propagate
    //  RoutedEvent = System.Windows.Controls.Control.MouseDoubleClickEvent,
    //  Source = this
    //});
}

标签: c#wpf

解决方案


这是您将MouseDoubleClickEvent在 WPF 中以编程方式提出的问题:

MouseButtonEventArgs doubleClickEvent = new MouseButtonEventArgs(Mouse.PrimaryDevice, (int)DateTime.Now.Ticks, MouseButton.Left);
doubleClickEvent.RoutedEvent = Control.MouseDoubleClickEvent;
doubleClickEvent.Source = this;
RaiseEvent(doubleClickEvent);

推荐阅读