0

Windowsフォームを追加したWPFプロジェクトがあります。

Windowsフォームにはメソッドがありrunme()ます。ただし、WPFフォームから呼び出したいと思います。

現在使用しています

Dim wpfForm as new wpfForm
wpfForm.Show()

WindowsフォームからWPFフォームを表示します。

ただし、コマンドを送り返す方法がわかりません。

私はもう試した:

Me.parent.runme()

しかし、これは私にエラーを与えます

4

2 に答える 2

0

あなたが望んでいることを行うために私が考えることができる唯一の方法は、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
于 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 に答える