从 WPF 到 WinForms 的气泡鼠标事件

发布于 2024-11-17 00:21:48 字数 129 浏览 3 评论 0原文

我使用 ElementHost 将 WPF 控件托管在 WinForms 控件内。 WinForms 控件有一个上下文菜单。我想在用户右键单击 WPF 控件时显示上下文菜单。这怎么能做到呢?看来鼠标事件没有从 WPF 冒泡到 WinForms。

I have WPF control hosted inside a WinForms control using ElementHost. The WinForms control has a context menu. I want to show the context menu when user right click on the WPF control. How can this be done? It seems mouse event is not bubbled from WPF to WinForms.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

帅哥哥的热头脑 2024-11-24 00:21:48

它不会自动冒泡,因为您可能首先在 WPF 控件中处理了它。但是,您可以轻松地自己添加它。

在您的 WPF 用户控件中,公开一个在鼠标右键上触发的事件:

    public event Action ShowContext;

    private void rectangle1_MouseRightButtonUp(object sender, MouseButtonEventArgs e)
    {
        if (ShowContext != null)
        {
            ShowContext();
        }
    }

然后在带有 element host 的 winforms 控件中,您可以像这样使用它:

    public UserControl1 WpfControl { get; set; }

    public Form1()
    {
        InitializeComponent();

        WpfControl = new UserControl1();
        WpfControl.ShowContext += () => contextMenuStrip1.Show(Cursor.Position);
        elementHost1.Child = WpfControl;
     ....

it is not automatically bubbled up, as you might have handled it in the WPF control in the first place. However, you can easily add this yourself.

In your WPF user control, expose an event that you trigger on right mouse up:

    public event Action ShowContext;

    private void rectangle1_MouseRightButtonUp(object sender, MouseButtonEventArgs e)
    {
        if (ShowContext != null)
        {
            ShowContext();
        }
    }

Then in your winforms control with element host you can use it like so:

    public UserControl1 WpfControl { get; set; }

    public Form1()
    {
        InitializeComponent();

        WpfControl = new UserControl1();
        WpfControl.ShowContext += () => contextMenuStrip1.Show(Cursor.Position);
        elementHost1.Child = WpfControl;
     ....
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文