Windowsフォームを追加したWPFプロジェクトがあります。
Windowsフォームにはメソッドがありrunme()ます。ただし、WPFフォームから呼び出したいと思います。
現在使用しています
Dim wpfForm as new wpfForm
wpfForm.Show()
WindowsフォームからWPFフォームを表示します。
ただし、コマンドを送り返す方法がわかりません。
私はもう試した:
Me.parent.runme()
しかし、これは私にエラーを与えます
あなたが望んでいることを行うために私が考えることができる唯一の方法は、Winform のカスタム コンストラクターを作成し、Wpf ウィンドウへの参照を渡すことです。WPF ウィンドウを Winforms ウィンドウの所有者/親として割り当てる簡単な方法はないようです。
Winform フォーム
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 フォーム ウィンドウにメッセージを送信できます。