Hallo zusammen,
kurze Frage, ich möchte das meine Document Events auch in der Application verfügbar sind. Gibt es eine andere Möglichkeit als meine Lösung, finde ich nicht so schön, dass ich die Events zwei mal deklarieren muss.
kurze Frage, ich möchte das meine Document Events auch in der Application verfügbar sind. Gibt es eine andere Möglichkeit als meine Lösung, finde ich nicht so schön, dass ich die Events zwei mal deklarieren muss.
VB.NET-Quellcode
- Public Class EQ_Document
- Public Property FullFileName As String = ""
- End Class
- Public Class EQ_Documents
- Inherits System.Collections.ObjectModel.KeyedCollection(Of String, EQ_Document)
- Public Event OnDocumentClose(BeforeOrAfter As EventTimingEnum)
- Public Event OnDocumentOpen(BeforeOrAfter As EventTimingEnum, ByRef Document As EQ_Document)
- Protected Overrides Function GetKeyForItem(item As EQ_Document) As String
- Return item.FullFilename
- End Function
- Protected Overrides Sub InsertItem(index As Integer, item As EQ_Document)
- RaiseEvent OnDocumentOpen(EventTimingEnum.After, item)
- MyBase.InsertItem(index, item)
- RaiseEvent OnDocumentOpen(EventTimingEnum.After, item)
- End Sub
- Protected Overrides Sub RemoveItem(index As Integer)
- RaiseEvent OnDocumentClose(EventTimingEnum.Before)
- MyBase.RemoveItem(index)
- RaiseEvent OnDocumentClose(EventTimingEnum.After)
- End Sub
- End Class
- Public Class EQ_Application
- Public Event OnDocumentClose(BeforeOrAfter As EventTimingEnum)
- Public Event OnDocumentOpen(BeforeOrAfter As EventTimingEnum, ByRef Document As EQ_Document)
- Private WithEvents Documents As New EQ_Documents
- Private Sub Documents_OnDocumentClose(BeforeOrAfter As EventTimingEnum) Handles Documents.OnDocumentClose
- RaiseEvent OnDocumentClose(BeforeOrAfter)
- End Sub
- Private Sub Documents_OnDocumentOpen(BeforeOrAfter As EventTimingEnum, ByRef Document As EQ_Document) Handles Documents.OnDocumentOpen
- RaiseEvent OnDocumentOpen(BeforeOrAfter, Document)
- End Sub
- End Class