Komponente über Namen finden

  • VB.NET

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

    Komponente über Namen finden

    Moin

    in Borland C++ gibt es die Funktion GetByName oder so, mit der man via des Namens einer Komponente auf diese zugreifen kann (also zb. GetByName(Label1).Text = "blablabla")

    Gibt es etwas ähnliches bei VB 2005?

    Über Google hab ich nichts gefunden, aber evt. hab ich auch nur die falschen Begriffe verwendet.

    Gruss
    Jeremin
    Jedes Control hat eine Eigenschaft .Controls, die die jeweiligen untergeordneten Controls enthält. Dies ist eine Collection und dort kann man die Objecte via Namen ansprechen. Wenn man also das Label1 auf Form1 ansprechen will:
    Form1.Controls("Label1")
    wenn Form1 die aktuelle Form ist, kann man statt Form1 auch "Me" nehmen.
    Da die Collection Objekte von Typ "Control" enthält, muss man casten, wenn man Eigenschaften verwenden will, die Control nicht hat, aber das spezielle Control (zb "Checked" bei CheckBoxen etc)
    DirectCast(Me.Controls("CheckBox112"),CheckBox).Checked=True
    Jop, das wäre etwa das, was ich mir vorstelle.

    Nur hab ich jetzt noch folgendes Problem:

    VB.NET-Quellcode

    1. Me.Controls("bu_pres_pos" & cstr(i)).Text = pres_pos_name(i-1)


    ergibt beim Compilieren:
    System.NullReferenceException - Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt.
    Ich versteh jetzt aber nicht, was ich da falsch gemacht habe?

    Gruss
    Jeremin