Übergabe einer Control in die Funktion einer anderen Klasse

  • VB.NET

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

    Übergabe einer Control in die Funktion einer anderen Klasse

    Guten Tag,
    ich habe folgendes Problem, für das ich hier eine Lösung erhoffe.

    Ich möchte eine Control (z.B. Textbox) meiner Form in eine fremde von mir erstellte Klasse übergeben, um zum Beispiel den Text der Box manipulieren zu können.

    Das ist der (relevante) Code meiner ext. Klasse

    VB.NET-Quellcode

    1. public class logging
    2. private _Anzeige as Control
    3. public sub setAnzeige(ByRef c as Control)
    4. _Anzeige = c
    5. end sub
    6. end class



    In meiner Form steht folgendes

    VB.NET-Quellcode

    1. private _logging as logging
    2. private sub setLogAnzeige()
    3. _logging.setAnzeige(txtLog)
    4. end sub



    Beim Ausführen der Routine setLogAnzeige bekomme ich folgende Fehlermeldung
    Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt.
    Wenn ich allerdings die Funktion aus der Klasse logging direkt ein meine Form packe, sieht man, dass grundsätzlich die Übergabe, wie ich sie geschrieben habe funktioniert.
    Was muss ich also anders machen, wenn meine Klasse die Control manipulieren können muss?

    Edit:
    Verzeiht, die merkwürdige Formatierung der Quellcode-Angaben.
    Scheinbar komm ich mit der Bedienung hier noch nicht ganz klar.

    Edit2:
    Mein System ist ein Core i5 Notebook mit Windows 7 64-bit.
    Ich verwende Visual Basic 2008 Express.

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „WilliamSpiderWeb“ ()

    Danke, das war wohl der Fehler, denn jetzt funktioniert's.

    Aber die Verwendung von NEW habe ich noch nicht ganz verstanden.

    1. Warum wird der Fehler erst geworfen, wenn ich die Control als Parameter an meine Klasse logging übergebe?

    2. Warum kann ich andere selbstgeschriebene Klassen verwenden, ohne sie mit NEW zu Instanzieren?
    So habe ich zum Beispiel eine Klasse erstellt, die für mich die Kommunikation über die serielle Schnittstelle mit einem Mikrocontroller übernimmt.
    Das Objekt zu dieser Klasse habe ich ohne NEW in meiner Hauptform erstellt.

    Viele Grüße
    1. Der Fehler tritt dann auf wenn du auf Methoden, Eigenschaften etc der Klasse zugreifen willst.
    2. Kannst du nicht. Du kannst lediglich auf Methoden, Eigenschaften etc zugreifen, die als "shared" gekennzeichnet sind. Die gehören dann nämlich zu keiner Instanz. Deswegen kann man aus shared Membern auch nicht auf Instanzvariablen zugreifen.


    Das Objekt zu dieser Klasse habe ich ohne NEW in meiner Hauptform erstellt.

    Na das zeig mal ...