我有一個WPF項目,我已經添加了Windows窗體。WPF在Windows窗體上運行命令
窗體窗體有一個方法runme()
。但我想從WPF表單中調用它。
目前我使用
Dim wpfForm as new wpfForm
wpfForm.Show()
顯示從Windows窗體的WPF的形式。
雖然我不確定如何發回命令。
我已經試過:
Me.parent.runme()
但是這給了我錯誤
我有一個WPF項目,我已經添加了Windows窗體。WPF在Windows窗體上運行命令
窗體窗體有一個方法runme()
。但我想從WPF表單中調用它。
目前我使用
Dim wpfForm as new wpfForm
wpfForm.Show()
顯示從Windows窗體的WPF的形式。
雖然我不確定如何發回命令。
我已經試過:
Me.parent.runme()
但是這給了我錯誤
最終什麼工作是創建一個接口,通過Cyborgx37
的建議Interface ILogOut
Sub DoIt()
End Interface
Class WinFormWindow : Implements ILogOut
Public Sub DoIt() Implements ILogOut.DoIt
MsgBox("Message Received!")
End Sub
End Class
然後,您可以使用一世LogOut接口從WPF窗口向Windows窗體窗口發送消息
,我能想到的做你想要什麼的唯一方法是創建一個自定義構造函數爲您的Winform和通它對Wpf窗口的引用。 There appears to be no easy way將WPF窗口分配爲Winforms窗口的所有者/父項。
的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
什麼是錯誤 –
是否可以向您的wpfForm添加構造函數參數?您可以使用[依賴注入](http://en.wikipedia.org/wiki/Dependency_injection)爲父項提供參考。你甚至可以使用一個接口,而不是強迫你的WPF表單接受一個WinForm表單作爲參數。 – JDB
我得到的錯誤是'類型'System.Windows.Window'的值無法轉換爲'WpfApplication1.MainWindow'。' – Akshat