vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
SEPA-Dateien erstellen inkl. IBAN-, BLZ-/Kontonummernprüfung  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2025
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

VB.NET - Fortgeschrittene
Re: ListView und ein Objekt 
Autor: ModeratorFZelle (Moderator)
Datum: 29.01.06 18:38


Deine Klasse MVCPattern soll der Controller sein.
Dann solte da nichts mit dem View drin passieren.

Ersteinmal deine Client Klasse sollte u.a. dies beinhalten.
 
Public Class MVC_Client
  Public Delegate Sub OnChangedDelegate(ByVal cl As MVC_Client)
  Public Event OnChanged As OnChangedDelegate
  'Irgendwelche Funbktionen die was machen und dann eben auch
  Private Sub ChangeHandler()
    If (OnChangedEvent IsNot Nothing) Then
      OnChangedEvent(Me)
    End If
  End Sub
  Private m_TestString As String
  Public WriteOnly Property TestString() As String
    Set(ByVal value As String)
      m_TestString = value
      ChangeHandler()
    End Set
  End Property
End Class
OnChangedEvent ist eine automatisch generierte Variable, die Du nicht per Intellisence bekommst.
Das ist das DelegateArray des Events OnChanged.

jetzt kommt der Controller. Der ist etwas komplexer, da er das Invoken mit übernehmen muss/sollte.
 
Imports System.ComponentModel
Public Class MVC_Controller
  Private clients As New List(Of MVC_Client)()
  Public Delegate Sub OnAddingHandler(ByVal sender As MVC_Controller, ByVal cl _
    As MVC_Client, ByRef cancel As Boolean)
  Public Delegate Sub OnChangeHandler(ByVal sender As MVC_Controller, ByVal cl _
  As MVC_Client)
  ' für onAdded, onRemoving, OnRemoved das gleiche machen
 
  Public Event OnAdding As OnAddingHandler
  Public Event OnChange As OnChangeHandler
 
  Public Sub add(ByVal cl As MVC_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
    End If
  End Sub
 
  Private Sub ClientChanged(ByVal cl As MVC_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
End Class
Und dein View ist jetzt einfach.
 
Public Class MVC_View
  Private myController As New MVC_Controller
  Public Sub New()
    AddHandler myController.OnAdding, AddressOf OnAddingHandler
    AddHandler myController.OnChange, AddressOf OnChangeHandler
  End Sub
  Private Sub OnAddingHandler(ByVal sender As MVC_Controller, ByVal cl As _
    MVC_Client, ByRef cancel As Boolean)
    ' Hier zum LisView hinzufügen
  End Sub
  Private Sub OnChangeHandler(ByVal sender As MVC_Controller, ByVal cl As _
    MVC_Client)
    'Hier threadsave das ListView ändern
  End Sub
  private sub Testit
    Dim mc As New MVC_Client
    myController.add(mc)
    mc.TestString = "Na schaun wir mal"
  End Sub
 
End Class
Wenn Du jetzt ein Client zu myController hinzufügst, und dann änderst,
kannst du mal die Abläufe verfolgen.
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
ListView und ein Objekt1.589MeisterEngel14.01.06 11:44
Re: ListView und ein Objekt1.101ModeratorDaveS14.01.06 12:43
Re: ListView und ein Objekt1.093MeisterEngel14.01.06 12:51
Re: ListView und ein Objekt1.171ModeratorDaveS14.01.06 13:06
Re: ListView und ein Objekt1.011MeisterEngel14.01.06 15:49
Re: ListView und ein Objekt1.075MeisterEngel16.01.06 22:11
Re: ListView und ein Objekt1.068MeisterEngel21.01.06 11:35
Re: ListView und ein Objekt989MeisterEngel24.01.06 13:31
Re: ListView und ein Objekt1.132ModeratorFZelle24.01.06 15:07
Re: ListView und ein Objekt1.057MeisterEngel24.01.06 19:05
Re: ListView und ein Objekt992ModeratorFZelle24.01.06 19:59
Re: ListView und ein Objekt1.066MeisterEngel24.01.06 20:15
Re: ListView und ein Objekt1.024ModeratorFZelle25.01.06 08:53
Re: ListView und ein Objekt1.003MeisterEngel27.01.06 11:11
Re: ListView und ein Objekt1.030_daniel_128.01.06 20:54
Re: ListView und ein Objekt986ModeratorFZelle29.01.06 11:43
Re: ListView und ein Objekt1.007MeisterEngel29.01.06 14:35
Re: ListView und ein Objekt1.017ModeratorFZelle29.01.06 15:41
Re: ListView und ein Objekt1.018MeisterEngel29.01.06 15:53
Re: ListView und ein Objekt1.513ModeratorFZelle29.01.06 18:38
Re: ListView und ein Objekt1.057MeisterEngel30.01.06 16:19
Re: ListView und ein Objekt1.004ModeratorFZelle30.01.06 18:18
Re: ListView und ein Objekt1.043MeisterEngel30.01.06 19:13
Re: ListView und ein Objekt1.102ModeratorFZelle30.01.06 21:09
Re: ListView und ein Objekt990MeisterEngel30.01.06 21:35
Re: ListView und ein Objekt1.126MeisterEngel06.02.06 22:04
Re: ListView und ein Objekt976ModeratorFZelle07.02.06 09:49
Re: ListView und ein Objekt979MeisterEngel07.02.06 13:15
Re: ListView und ein Objekt1.041ModeratorFZelle07.02.06 13:52
Re: ListView und ein Objekt1.199MeisterEngel28.01.06 19:36

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2025 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel