winform鼠标事件到wpf用户控件

时间:2018-04-24 14:23:00

标签: c# wpf winforms mouseevent

我已经实现了一个WPF项目,该项目呈现来自微型表面光度仪的3D网格数据。

因为我已经在WinForms上实现了大部分2D数据分析工作;我想创建一个由winform应用程序调用的WPF类的用户控件。 而我做到了。 问题是在WPF类中触发了鼠标事件,我可以旋转,缩放和移动网格; 但是当我在winform应用程序中插入用户控件时,网格成功创建;但根本没有触发鼠标事件。 (但它们是在用户控件中实现的)

我错过了一些逻辑吗?

以下是WPF鼠标事件的代码

public void OnViewportMouseDown(object sender, System.Windows.Input.MouseButtonEventArgs args)
{
    Point pt = args.GetPosition(mainViewport);
    if (args.ChangedButton == MouseButton.Left)         // rotate or drag 3d model
    {
        m_transformMatrix.OnLBtnDown(pt);
    }

    }

    public void OnViewportMouseMove(object sender, System.Windows.Input.MouseEventArgs args)
    {
        Point pt = args.GetPosition(mainViewport);

        if (args.LeftButton == MouseButtonState.Pressed)                // rotate or drag 3d model
        {
            m_transformMatrix.OnMouseMove(pt, mainViewport);

            TransformChart();
        }
    }

    public void OnViewportMouseUp(object sender, System.Windows.Input.MouseButtonEventArgs args)
    {
        Point pt = args.GetPosition(mainViewport);
        if (args.ChangedButton == MouseButton.Left)
        {
            m_transformMatrix.OnLBtnUp();
        }

    }
}

这是使用WPF用户控件的winform

public partial class MeshViewer: Form
{
    wpfControlLib.UserControl1 userControl;
    public MeshViewer(double[,] d)
    {
        InitializeComponent();

        userControl = new wpfControlLib.UserControl1(d);
        elementHost1.Child = userControl;
        elementHost1.Show();

    }
}

我尝试在winform类中放置相同的鼠标事件处理程序,然后调用WPF类的相应鼠标事件,但WinForms和WPF中的鼠标事件args不同......我不认为这是正确的道路......

0 个答案:

没有答案