AddHandler: Object Variable fehlt Event

  • VB.NET
  • .NET (FX) 4.5–4.8

Es gibt 3 Antworten in diesem Thema. Der letzte Beitrag () ist von ErfinderDesRades.

    AddHandler: Object Variable fehlt Event

    Hallo Zusammen!


    Ausgangslage

    Ich habe eine Klasse, die nennt sich "Parameter" und diese Klasse besitzt eine Eigenschaft, also eine Variable, vom Typ "Object".

    VB.NET-Quellcode

    1. Public VisualObject As Object

    Ich kann nicht wissen was für ein visuelles Steuerelement das erzeugte Parameter-Objekt haben wird! Es könnte eine gewöhnliche WPF Control sein, wie z.B eine TextBox, aber auch eine MahApps.Metro.Controls.Tile.
    Deswegen hatte ich mich für den Typ "Object" entschieden. Bis hierhin hat es gut geklappt...

    Problemstellung

    Nun bin ich an dem Punkt angelangt, wo ich dynamisch Subroutinen zum Handler hinzufügen will.

    VB.NET-Quellcode

    1. ...
    2. For Each p In newParameterlist
    3. If (p.mapOf.Count < 1) Then
    4. Select Case True
    5. Case TypeOf p.visualObject Is TextBox
    6. AddHandler p.visualObject.TextChanged, AddressOf myProcedures.RangeDependetEvent
    7. Case TypeOf p.visualObject Is MahApps.Metro.Controls.Tile
    8. AddHandler p.visualObject.Click, AddressOf myProcedures.SwitchDependetEvent
    9. End Select
    10. End If
    11. Next
    12. ...

    Leider scheint "Object" als Typ, keine Ereignisse zu verfügen, weswegen ich keinen Handler angeben kann.

    Frage

    Wie könnte ich einen Handler angeben?
    Falls nicht, gibt es einen anderen Lösungsansatz? Evtl. einen anderen Typ statt "Object"?


    Besten Dank für eure Zeit
    Du musst VisualObject zuerst von Object in den gewünschten Typ Casten mit DirectCast. Dann kannst du auch auf alle Member des Objektes zugreifen.
    Dass du vorher bereits auf den Typ prüfst ist schonmal der richtige Weg. In jedem falle solltest du vor dem Switch-Case jedoch auch prüfen ob VisualObject nicht nothing ist.
    in diesem Falle ist TryCast effizienter, weil das prüft und castet in einem Aufruf.
    Auf andere Weise in höchstem Masse effizient ist, ein gut Buch durchzuackern - im speziellen Falle das Kapitel zu Typumwandlungen. Empfehlenswerte Autoren (und online kostenlos verfügbar) sind entweder Kühnel/Leibhard oder Löffelmann. gugge auf Entwickler-Ressourcen und Tools, Bücher und WebCasts danach.

    Ist wirklich wichtig. Du werkelst da schon an bisserl anspruchsvollerem herum, da müssen die Grundlagen vollständig gekonnt sein, no excuses.
    sonst machst du dir nur sehr viel Arbeit, und das Ergebnis ist doch nur zum Wegwerfen, und nichtmal gelernt hätteste dabei.



    Dies hier zB ist doch ein schönes Lernergebnis - dessen innere Logik und Allgemeingültigkeit dir vmtl. garnet klar ist:

    Hutti schrieb:

    Leider scheint "Object" als Typ, keine Ereignisse zu verfügen
    Natürlich hat Object keine Ereignisse, Object ist die Basisklasse aller anderen!
    Dass dir sowas als so selbstverständlich auffällt wie es ist - das wäre ein Ziel des Bücher-Studiums (Thema OOP)