Hi zusammen,
ich arbeite gerade an einem UserControl mit dem BingMaps WPF Control.
Meine Dll soll (muss) später in einem VB6 Projekt benutzt werden. Das funktioniert nun auch soweit.
Mein Problem sind nur die Events aus dem UserControl nach VB6.
Aufbau des Controls:
Die Dll ist eine Windows Forms Dll.
in dieser Dll haben ich ein WPF-UserControl in dem das BingMaps WPF-Control angezeigt wird.
Damit dieses BingCOntrol in VB6 angezeigt wereden kann, muß ich ein weiteres Windows Forms UserControl einbinden, welches als Host für das WPF-UserControl agiert. Diesen Umweg muss ich gehen, da ich ein WPF-UserControl in VB6 nicht mehr angezeigt bekomme, ein WIndows-Forms UserControl kann ich jedoch anzeigen. Wie gesagt, das Control habe ich in einem Projekt schon mal geladen.
Wenn ich nun aus dem WPF-UserControl eine Action in VB6 auslösen will, habe ich im WPF-UserControl Event deklariert, und lösen diese bei Bedarf aus.
Im Windows-Forms UserControl habe ich ebenfalls die gleichen Events deklariert.
Im Windows-Forms UserControl verarbeite ich diese Event, und löse die Events des Windows-Forms UserControls aus.
Diese Controls verarbeite ich dann in VB6.
Mein Problem ist nun, dass ich die Event zwar im WPF-UserControl auslöse, diese kommen aber im Windows Forms-UserControl nicht an.
Ist mein erstes Projekt mit WPF, wahrscheinlich mache ich da irgendwas falsch.
Hier in Auszügen mein Code
Projekt BingMapsControl
ucBing (WPF-UserControl
ucBingMaps (WindowsForms UserControl)
Projekt BingMapsControlTester (Testweise eine Dot.Net Windows Forms Anwendung)
frmMain
---ucBing--------------------------------------------------
---Ende ucBing--------------------------------------------------
---ucBingMaps--------------------------------------------------
---Ende ucBingMaps--------------------------------------------------
---frmMain--------------------------------------------------
im Designer
im Form
---Ende frmMain--------------------------------------------------
Mein Problem ist, dass die Events aus dem WPF-UserControl nicht ausgelöst werden.
Hat irgendjemand eine Idee?
Vielen Dank
Winfried Wolf
ich arbeite gerade an einem UserControl mit dem BingMaps WPF Control.
Meine Dll soll (muss) später in einem VB6 Projekt benutzt werden. Das funktioniert nun auch soweit.
Mein Problem sind nur die Events aus dem UserControl nach VB6.
Aufbau des Controls:
Die Dll ist eine Windows Forms Dll.
in dieser Dll haben ich ein WPF-UserControl in dem das BingMaps WPF-Control angezeigt wird.
Damit dieses BingCOntrol in VB6 angezeigt wereden kann, muß ich ein weiteres Windows Forms UserControl einbinden, welches als Host für das WPF-UserControl agiert. Diesen Umweg muss ich gehen, da ich ein WPF-UserControl in VB6 nicht mehr angezeigt bekomme, ein WIndows-Forms UserControl kann ich jedoch anzeigen. Wie gesagt, das Control habe ich in einem Projekt schon mal geladen.
Wenn ich nun aus dem WPF-UserControl eine Action in VB6 auslösen will, habe ich im WPF-UserControl Event deklariert, und lösen diese bei Bedarf aus.
Im Windows-Forms UserControl habe ich ebenfalls die gleichen Events deklariert.
Im Windows-Forms UserControl verarbeite ich diese Event, und löse die Events des Windows-Forms UserControls aus.
Diese Controls verarbeite ich dann in VB6.
Mein Problem ist nun, dass ich die Event zwar im WPF-UserControl auslöse, diese kommen aber im Windows Forms-UserControl nicht an.
Ist mein erstes Projekt mit WPF, wahrscheinlich mache ich da irgendwas falsch.
Hier in Auszügen mein Code
Projekt BingMapsControl
ucBing (WPF-UserControl
ucBingMaps (WindowsForms UserControl)
Projekt BingMapsControlTester (Testweise eine Dot.Net Windows Forms Anwendung)
frmMain
---ucBing--------------------------------------------------
Code:
Imports Microsoft.Maps.MapControl.WPF Imports System.Windows.Media Public Class ucBing Private Sub UserControl_Loaded(ByVal sender As System.Object, ByVal e As System.Windows.RoutedEventArgs) Handles MyBase.Loaded '...... End Sub Public Function LocationAdd(ByVal Location As String, ByVal Name As String, ByVal Key As String, ByVal IconKey As String, ByVal ToolTip As String, Optional ByVal Selected As Boolean = False) As Boolean If Location.StartsWith("GPS") Then '... Else 'Adresse 'Dann Geocodieren '.... Dim newGPS As String Dim Key as String newGPS = "GPS" & lLoc1.Latitude & "*" & lLoc1.Longitude newGPS = Replace(newGPS, ",", ".") 'Event auslösen RaiseEvent ucBingGeocoded(Key, newGPS) End If End Function Public Event ucBingItemClick(ByVal Key As String) End Class
---ucBingMaps--------------------------------------------------
Code:
Public Class ucBingMaps Public WithEvents ucBing As ucBing Public Event Geocoded(ByVal Key As String, ByVal GPS As String) Public Sub New() ' Dieser Aufruf ist für den Designer erforderlich. InitializeComponent() ' Fügen Sie Initialisierungen nach dem InitializeComponent()-Aufruf hinzu. End Sub Private Sub ucBing_ucBingGeocoded(ByVal Key As String, ByVal GPS As String) Handles ucBing.ucBingGeocoded RaiseEvent Geocoded(Key, GPS) End Sub End Class
---frmMain--------------------------------------------------
im Designer
Code:
Friend WithEvents ucBingMaps As ZBSBingMapsControl.ucBingMaps
Code:
Private Sub ucBingMaps_Geocoded(ByVal Key As String, ByVal GPS As String) Handles ucBingMaps.Geocoded Me.TextBox1.Text = "Key: " & Key & vbCrLf & "GPS: " & GPS End Sub
---Ende frmMain--------------------------------------------------
Mein Problem ist, dass die Events aus dem WPF-UserControl nicht ausgelöst werden.
Hat irgendjemand eine Idee?
Vielen Dank
Winfried Wolf
Comment