我有一个 WPF 项目,我在其中添加了一个 Windows 窗体。
windows窗体有一个方法runme()
。但我想从 WPF 表单中调用它。
目前我用过
Dim wpfForm as new wpfForm
wpfForm.Show()
从 Windows 窗体显示 WPF 窗体。
我不确定如何发回命令。
我试过了:
Me.parent.runme()
但这给了我错误
我能想到的唯一方法是为您的 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
最终起作用的是按照 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 窗体窗口