Events

30/07/2009 - 13:28 von George Löwer | Report spam
Hi ihr,

ich habe eine Klasse "Position" und eine Klasse die als Auflistung
(Collection) Namens "Positionen" funkiert.
Wie kann ich in der Klasse "Position" ein Event auslösen, welches dann in
der Klasse "Positionen" abgefangen wird.

Irgendwie finde ich da bisher keinen Weg.
Mit "Dim withevents Pos as Position" geht es nicht.

Wàre für Hilfe dankbar.

Gruß George
 

Lesen sie die antworten

#1 Harald M. Genauck
30/07/2009 - 22:53 | Warnen spam
Hallo George,

ich habe eine Klasse "Position" und eine Klasse die als Auflistung
(Collection) Namens "Positionen" funkiert.
Wie kann ich in der Klasse "Position" ein Event auslösen, welches
dann in der Klasse "Positionen" abgefangen wird.

Irgendwie finde ich da bisher keinen Weg.
Mit "Dim withevents Pos as Position" geht es nicht.



Direkt mit Events wirst Du wohl nicht weiterkommen.

Der einfachste Weg wàre, der Positionen-Collection mit einer dem
eigentlich geplanten Ereignis àhnlichen Methode (Prozedur) zu versehen,
den in die Collection eingefügten Position-Elementen jeweils eine
("Parent"-)Referenz auf die Collection zu übergeben (ebenfalls über
eine Methode) und jene Methode dann von den Position-Elementen aus
aufrufen, anstatt ein Ereignis auszulösen. (Im Prinzip ist das auch der
Mechanismus, der eigentlich hinter den Ereignissen steckt.)

Klasse Positionen:

...
Public Sub MeinQuasiEreignis(...)
...
End Sub

Public Sub Add(Item As Position)
Set Item.Parent = Me
' Add in Collection ...
End Sub

Public Sub Remove(Item As Position) ' oder wie auch immer...
Set Item.Parent = Nothing
End Sub


Klasse Position:

Private mParent as Positionen

Public Property Set Parent(NewParent As Positionen)
Set mParent = NewParent
End Property

... 'Ereignis auslösen':
mParent.MeinQuasiEreignis ...


Wichtig ist, beim Entfernen eines Position-Element aus der Collection,
die Parent-Eigenschaft wieder auf Nothing zurückzusetzen, damit die
Referenz auf die Collection dort nicht verwaist und das Terminieren der
Collection verhindert.

Ähnliches Beispiel:
http://www.aboutvb.de/khw/artikel/k...events.htm


Viele Grbüße

Harald M. Genauck

"ABOUT Visual Basic" - http://www.aboutvb.de (Herausgeber)
"VISUAL STUDIO one" - http://www.visualstudio1.de (Chefredakteur)

Ähnliche fragen