Hallo, also ich hab den Controller nun folgendermaßen:
Imports System.ComponentModel
Public Class MVC_Controller
Private clients As New ArrayList
Public Delegate Sub OnAddingHandler(ByVal sender As MVC_Controller, ByVal _
cl As Client, ByRef cancel As Boolean)
Public Delegate Sub OnChangeHandler(ByVal sender As MVC_Controller, ByVal _
cl As Client)
Public Delegate Sub OnRemoveHandler(ByVal sender As MVC_Controller, ByVal _
cl As Client)
Public Event OnAdding As OnAddingHandler
Public Event OnChange As OnChangeHandler
Public Event OnRemove As OnRemoveHandler
Public Function IndexOf(ByVal cl As Client) As Integer
Return clients.IndexOf(cl)
End Function
Public Sub add(ByVal cl As Client)
Dim CancelIt As Boolean = False
Dim handler As OnAddingHandler = OnAddingEvent
If (handler IsNot Nothing) Then
' Hier ein paar tricks. Du kannst mehr als einen Handler
' installieren, also
' müssen wir bei jedem überprüfen, ob wir Invoken müssen
For Each singleCast As OnAddingHandler In handler.GetInvocationList( _
)
Dim syncInvoke As ISynchronizeInvoke = TryCast( _
singleCast.Target, ISynchronizeInvoke)
Try
If ((syncInvoke IsNot Nothing) AndAlso ( _
syncInvoke.InvokeRequired)) Then
syncInvoke.Invoke(singleCast, New Object() {Me, cl, _
CancelIt})
Else
singleCast(Me, cl, CancelIt)
End If
Catch ex As Exception
End Try
Next
End If
If CancelIt = False Then
clients.Add(cl)
'Und hier hängen wir uns in das onChangeEvent des Clients ein
AddHandler cl.OnChanged, AddressOf ClientChanged
AddHandler cl.OnRemoved, AddressOf ClientRemoved
End If
End Sub
Private Sub ClientChanged(ByVal cl As Client)
Dim handler As OnChangeHandler = OnChangeEvent
If (handler IsNot Nothing) Then
For Each singleCast As OnChangeHandler In handler.GetInvocationList( _
)
Dim syncInvoke As ISynchronizeInvoke = TryCast( _
singleCast.Target, ISynchronizeInvoke)
Try
If ((syncInvoke IsNot Nothing) AndAlso ( _
syncInvoke.InvokeRequired)) Then
syncInvoke.Invoke(singleCast, New Object() {Me, cl})
Else
singleCast(Me, cl)
End If
Catch ex As Exception
End Try
Next
End If
End Sub
Private Sub ClientRemoved(ByVal cl As Client)
Dim handler As OnRemoveHandler = OnRemoveEvent
If (handler IsNot Nothing) Then
For Each singleCast As OnRemoveHandler In handler.GetInvocationList( _
)
Dim syncInvoke As ISynchronizeInvoke = TryCast( _
singleCast.Target, ISynchronizeInvoke)
Try
If ((syncInvoke IsNot Nothing) AndAlso ( _
syncInvoke.InvokeRequired)) Then
syncInvoke.Invoke(singleCast, New Object() {Me, cl})
Else
singleCast(Me, cl)
End If
Catch ex As Exception
End Try
Next
End If
End Sub
End ClassKannst du mir das mit den ganzen AddHandler und den ganzen Event-Deklarationen beim Controller, Client und im View erklären?? Ich blick da irgendwie nicht durch und richtig debuggen kann man das auch nich  |