0

我有一个 WPF 项目,我在其中添加了一个 Windows 窗体。

windows窗体有一个方法runme()。但我想从 WPF 表单中调用它。

目前我用过

Dim wpfForm as new wpfForm
wpfForm.Show()

从 Windows 窗体显示 WPF 窗体。

我不确定如何发回命令。

我试过了:

Me.parent.runme()

但这给了我错误

4

2 回答 2

0

我能想到的唯一方法是为您的 Winform 创建一个自定义构造函数并将对 Wpf 窗口的引用传递给它。似乎没有简单的方法可以将 WPF 窗口分配为 Winforms 窗口的所有者/父级。

窗体

Public Class Form1
    Dim myParent As System.Windows.Window
    Public Sub New()
        InitializeComponent()
    End Sub

    Public Sub New(parent As System.Windows.Window)
        myParent = parent
        InitializeComponent()
    End Sub

    Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
        CType(myParent, MainWindow).runMe()
    End Sub

End Class

Wpf 表单

Class MainWindow 
    Dim winForm As Form1
    Private Sub Button1_Click(sender As System.Object, e As System.Windows.RoutedEventArgs) Handles Button1.Click
        winForm = New Form1(Me)
        winForm.Show()
    End Sub
    Public Sub runMe()
        Me.Background = Brushes.Red
    End Sub
End Class
于 2012-09-17T04:37:42.837 回答
0

最终起作用的是按照 Cyborgx37 的建议创建一个界面

Interface ILogOut
    Sub DoIt()
End Interface

Class WinFormWindow : Implements ILogOut
    Public Sub DoIt() Implements ILogOut.DoIt
        MsgBox("Message Received!")
    End Sub
End Class

然后,您可以使用 ILogOut 接口将消息从 WPF 窗口发送到 Windows 窗体窗口

于 2012-10-20T08:26:10.867 回答