Adresse einer Funktion an Form in DLL übergeben

15/03/2009 - 07:55 von Hansjörg Wintermantel | Report spam
Hallo,

ich habe ein Hauptprojekt und eine Klassenbibliothek. Die Klassenbibliothek
enthàlt Forms, die mit Form.Show aus dem Hauptprojekt aufgerufen werden. Kann
ich diesen Forms die "Adresse" einer Klasse oder Funktion aus dem
Hauptprojekt übergeben, damit die Form der Klassenbibliothek dem Hauptprojekt
etwas übergeben kann?

Bin für jeden Ansatz dankbar

Hansjörg Wintermantel
 

Lesen sie die antworten

#1 Peter Fleischer
15/03/2009 - 08:22 | Warnen spam
"Hansjörg Wintermantel"
schrieb im Newsbeitrag
news:

ich habe ein Hauptprojekt und eine Klassenbibliothek. Die
Klassenbibliothek
enthàlt Forms, die mit Form.Show aus dem Hauptprojekt aufgerufen werden.
Kann
ich diesen Forms die "Adresse" einer Klasse oder Funktion aus dem
Hauptprojekt übergeben, damit die Form der Klassenbibliothek dem
Hauptprojekt
etwas übergeben kann?

Bin für jeden Ansatz dankbar



Hi Hansjörg,
das geht ganz einfach mit einem Delegate, z.B. so:

Option Infer On ' Only VB9
Option Strict Off

Public Class Form1

Dim lbl As New Label With {.Dock = DockStyle.Bottom}

Private Sub Form1_Load(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles MyBase.Load
Me.Controls.Add(lbl)
Call (New myForm2(AddressOf DatenAnzeige)).Show()
End Sub

Private Sub DatenAnzeige(ByVal txt As String)
lbl.Text = txt
End Sub

End Class

Friend Class myForm2
Inherits Form

Delegate Sub dele(ByVal s As String)
Private myDelegate As dele

Private WithEvents btn As New Button _
With {.Dock = DockStyle.Top, .Text = "Drücken"}

Public Sub New(ByVal adr As dele)
myDelegate = adr
End Sub

Private Sub Form1_Load(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles MyBase.Load
Me.Controls.Add(btn)
End Sub

Private Sub btn_Click(ByVal sender As Object, _
ByVal e As System.EventArgs) Handles btn.Click
myDelegate.Invoke(Now.ToLongTimeString)
End Sub

End Class

Viele Grüsse
Peter

Ähnliche fragen