Name einer Textbox ein Array

  • VB.NET

Es gibt 10 Antworten in diesem Thema. Der letzte Beitrag () ist von thefiloe.

    Hä?

    Der "Name" einer Textboxbox ist der Bezeichner einer Variablen. Variablenbezeichner unterliegen gewissen Anforderungen.

    Wenn du uns sagst, was du EIGENTLICH willst, können wir möglicherweise die "echte" Frage besser beantworten. Denn mit 99% Wahrscheinlichkeit ist dein Ansatz schon komplett falsch
    Wenn Du Deine Textboxen auf einer Form hast, sind sie im gewissen Sinne in einem Array....

    VB.NET-Quellcode

    1. Me.Controls
    Die Unendlichkeit ist weit. Vor allem gegen Ende. ?(
    Manche Menschen sind gar nicht dumm. Sie haben nur Pech beim Denken. 8o
    Dann speicher halt, bevor neue dazu kommen, die Textboxen in einer

    VB.NET-Quellcode

    1. Dim listTB As New List(Of TextBox)


    Aber ich werd iwi das Gefühl nicht los, dass Du auf einem Holzweg bist. Erzähl mal mehr über das, was Dein Programm machen soll. Evtl. gibts ne schöne Lösung dafür.
    Die Unendlichkeit ist weit. Vor allem gegen Ende. ?(
    Manche Menschen sind gar nicht dumm. Sie haben nur Pech beim Denken. 8o

    SpaceyX schrieb:

    VB.NET-Quellcode

    1. Dim listTB As New List(Of TextBox)
    kann man noch verfeinern, wenn alle Textboxen bekannt sind:

    VB.NET-Quellcode

    1. Dim arrayTB() As TextBox = { TextBox1, TextBox2, TextBox3, TextBox4 }
    2. Dim txt = ""
    3. For Each tb In arrayTB
    4. txt &= tb.Text & Environment.NewLine
    5. Next
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Mein Problem ist:

    Ich habe einen Button. Wenn ich auf diesen klicke, soll in einem TableLayoutPanel ein neue Zeile erstellt werden. Alle Zeilen haben zwei Spalten. In beide freien Felder soll nun eine Textbox eingefügt werden.

    Mit einem anderen Button lese ich dann alle TextBoxes aus und verarbeite die darin enthaltenen Werte weiter.


    Ich dachte es wäre ganz einfach wenn man die TextBoxes über ein Array ansprechen könnte, also:

    TextBoxes(0).Text = ...

    also, dass es die TextBoxes(0), (1), (2), ... gibt.



    LG
    @K.K.

    Das was du vorhast geht eigentlich. Ist zwar nicht perfekt, aber man kann drauf aufbauen :)

    VB.NET-Quellcode

    1. Option Strict On
    2. Public Class Form1
    3. Dim tbl As New List(Of TextBox)
    4. Dim currentIndex As Integer = 0
    5. Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    6. Add()
    7. tbl(0).Text = "New Hallo"
    8. Label1.Text = tbl(0).Text
    9. Me.Controls.Add(tbl(0))
    10. End Sub
    11. Private Sub Add()
    12. tbl.Add(New TextBox)
    13. currentIndex = currentIndex + 1
    14. End Sub
    15. End Class
    Alle Textboxen befinden sich in einem Container. Sei es die Form, ein Panel oder sonst was.
    Und dieser Container hat eine Eigenschaft Children.
    Dort gehst du alle TextBoxen durch und schaust nach ob diese in das Array sollen.
    Beispielcode:

    VB.NET-Quellcode

    1. Dim textBoxen As TextBox() = container.Children.Where(Function(x) TypeOf x Is TextBox AndAlso x.Tag.Contains("abc")).ToArray()


    Beim tag hauste dann bei den betroffenen TextBoxen z.b. abc rein. Diese identifizieren dann die TextBox als betroffene TextBox.
    Der container ist wie gesagt von mir aus die Form. Schau halt nach wo du die generierten TextBoxen reinhaust. (z.B. Me.Children.Add(...)).
    Ach ja ich würde eine Liste besser finden als ein Array. Dazu am Ende einfach anstatt ".ToArray()" -> ".ToList()".


    Opensource Audio-Bibliothek auf github: KLICK, im Showroom oder auf NuGet.