Textboxen wie ein Array ansprechen

  • VB.NET

Es gibt 12 Antworten in diesem Thema. Der letzte Beitrag () ist von miamiomc.

    Textboxen wie ein Array ansprechen

    Hallo Gemeinde,

    nachdem ich mich beginne von VBA zu verabschieden stoße ist bei VB auf ein erstens Problem:



    Ich habe eine ganze Reihe von Textboxen. Diese könnte ich unter VBA wie folgt behandeln:

    Quellcode

    1. Dim a as integer
    2. ...
    3. Me("Textbox_" & a).Visible = True


    Unter VB 2008 klappt das aber nicht. Kennt jemand eine Abhilfe?


    Danke

    Lothar
    Hey,
    das geht ganz einfach:

    VB.NET-Quellcode

    1. Dim a As Integer
    2. ' ...
    3. For Each Ctrl As Control In Me.Controls
    4. If TypeOf(Ctrl) Is TextBox And Ctrl.Name = "Textbox_" & a.ToString() Then
    5. Ctrl.Visible = True
    6. End If
    7. Next

    MfG,
    -haiyyu
    TypeOf(Ctrl) Is TextBox And
    Kannst dir sparren in dem du bei der For-Schleife nciht as Control sondern as TextBox machst :D
    Würde a noch als String declarieren, und nicht schreiben ctrl.name = "TextBox_" & a.tostring() sondern ctrl.name = a
    Daddruch kann die Textbox dann auch anders heißen.
    Optimal wärs wenn man a als string declariert und noch ne for schleife durchlaufen lässt die alle valuen von a durchcheckt :D

    VB.NET-Quellcode

    1.   Dim a() As String = {"TextBox1", "TextBox2", "TextBox3"}
    2.   Dim _Visible() As Boolean = {True, False, True}
    3.   ' ...
    4.   For Each Ctrl As TextBox In Me.Controls
    5.   For i As Integer = 0 To a.count - 1
    6.   If Ctrl.Name = a(i) Then Ctrl.Visible = _Visible(i)
    7.   Next
    8.   Next

    Durch den Bool oben kann man noch bestimmen welchen wert die visible wert die textbox bekommen soll
    :)
    lg aspire
    Also haiyyus Lösung ist eindeutig besser, denn

    VB.NET-Quellcode

    1. Dim a() As String = {"TextBox1", "TextBox2", "TextBox3"}

    Das ist unsauber. Damit beschränkst du dich ja auf 3 Textboxen, wenn noch ein 4. hinzukommt, musst du es manuell eingeben.

    //EDIT: Object ist besser als Textbox, denn es wird ein Fehler ausgegeben, wenn keine Textboxen auf der Form sind. Um Fehler auszuschließen, ists besser, ctrl as Object zu deklarieren.
    "Wenn jemand in einem Betrieb unverzichtbar ist, dann ist dieser Betrieb falsch organisiert." - Roberto Niederer

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „milaim“ ()

    Nicht so ganz Zielführend

    Hallo,

    erst einmal vielen Dank. Aber doch sehr umfangreich.

    Ich muss auf diese weise immer alle Elemente des ansprechen (durchsuchen). Wenn ich eine Schleife durchlaufe die Werte für 15 der 150 Felder enthält üsste ich mit jedem Durchlauf immer alle Felder (For Each textBox In From tb In Me.Controls) durchgehen. Das ganze geht mir ein wenig stark auf die Performance, zumal ich einige Schleifen 3000 mal durchlaufe.



    Mal sehen vielleicht findet sich ja noch ein anderer Weg.



    Lothar