Arrays mit Namen

  • VB.NET
  • .NET (FX) 4.0

Es gibt 15 Antworten in diesem Thema. Der letzte Beitrag () ist von WhitePage.

    Arrays mit Namen

    Hallo zusammen,

    gibt es eine Möglichkeit Arrays über Namen statt mit IDs anzusprechen?

    Beispiel 1:

    VB.NET-Quellcode

    1. Dim Name = x(Name)
    2. Dim Str = x(Str)


    Beispiel 2:

    VB.NET-Quellcode

    1. Panel1.Controls(Name).Text = "Irgendein Name"
    2. Panel1.Controls(Strasse).Text = "Irgendeine Strasse"


    Im moment "rate" ich etwas nach ID's und frage die Namen ab..:

    VB.NET-Quellcode

    1. If Panel1.Controls(0).Name = "Name" then Panel1.Controls(0).Text = "Irgendein Name"


    Ich hoffe ihr könnt mir noch einmal helfen!

    Mathy

    Edit: Merkwürdige Fragestellung korrigiert

    Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von „Mathy“ ()

    Dazu kannst du ein Dictionary benutzen oder du baust dir deine eigene List(Of Type).

    Dictionary-Beispiel:

    VB.NET-Quellcode

    1. Dim dicTest As New Dictionary(Of Integer, String)
    2. dicTest.Add(1, "Du hast eins angesprochen")
    3. dicTest.Add(5, "Du hast fünf angesprochen")
    4. '...
    5. MessageBox.Show(dicTest(5))


    EDIT: Oder wie sieht's so aus:

    VB.NET-Quellcode

    1. Dim dicControls As New Dictionary(Of String, Control)
    2. dicControls.Add("C1", Button1)
    3. dicControls.Add("C2", CheckBox1)
    4. MessageBox.Show(dicControls("C2").Name)

    Polling is trolling!

    Achtung: Ich habe die komische Angewohnheit, simple Dinge zu verkomplizieren..

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

    Erkläre mal bitte, welches Ziel dahinter steckt, dann kann evtl. auch über bessere Lösungen nachdenken.
    Die Unendlichkeit ist weit. Vor allem gegen Ende. ?(
    Manche Menschen sind gar nicht dumm. Sie haben nur Pech beim Denken. 8o
    Jap.. Das war mir nämlich auch noch nicht so ganz klar, deswegen habe ich nur passend antworten können :)!..

    Die Controls variabel anzusprechen ist ja wie man sieht schonmal kein Problem, aber was ist es dann genau?
    Polling is trolling!

    Achtung: Ich habe die komische Angewohnheit, simple Dinge zu verkomplizieren..
    Ich habe ein Panel mit min. 3 Textboxen. Diese Textboxen sind hintereinander und können sich zur Laufzeit von der Größe verändern. Darum möchte ich ihre Position auch dementsprechend anpassen.

    Im folgendem Stil:

    VB.NET-Quellcode

    1. Textbox1.Location = New Point(0,0)
    2. Textbox2.Location = New Point(0,Textbox1.Width)
    3. Textbox3.Location = New Point(0,Textbox2.Left + Textbox2.Width)


    Diese 3 Textboxen werden dynamisch erzeugt und werden an ein Panel gehangen, über das man später noch die Contorls (in dem Fall die Textboxen) modifizieren kann.

    Ich habe jetzt gerade eine CustomPanel-Class gemacht, welche noch ein Dictionary hat, in welchem man die Controls einfacher wiederfinden kann.

    WhitePage schrieb:

    über die List an.
    Der TE will 3 TextBoxen nebeneinander darstellen, Post #7. ;)
    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!

    Mathy schrieb:

    gibt es eine Möglichkeit Arrays über Namen statt mit IDs anzusprechen?

    wenn es dynamisch abgeht, vielleicht so:

    VB.NET-Quellcode

    1. With Me.Panel1
    2. .Controls.Add(New TextBox)
    3. .Controls(0).Name = "Hallo"
    4. .Controls("Hallo").BackColor = Color.AliceBlue
    5. '
    6. 'usw.
    7. '
    8. End With

    VB1963 schrieb:

    wenn es dynamisch abgeht, vielleicht so:

    VB.NET-Quellcode

    1. With Me.Panel1
    2. .Controls.Add(New TextBox)
    3. .Controls(0).Name = "Hallo"
    4. .Controls("Hallo").BackColor = Color.AliceBlue
    5. '
    6. 'usw.
    7. '
    8. End With


    Ich habe eigentlich auch gedacht, dass es so funktioniert, oder zumindest so:

    VB.NET-Quellcode

    1. With Me.Panel1
    2. .Controls.Add(New TextBox)
    3. .Controls(0).Name = "Hallo"
    4. .Controls.Hallo.BackColor = Color.AliceBlue
    5. '
    6. 'usw.
    7. '
    8. End With


    Aber du kannst so nicht auf die Controls zugreifen.
    Die ControlCollection eines Panels ist recht unbrauchbar, weil ist nur auf Controls typisiert.
    Gibts iwie ein Problem eine List(Of Textbox) anzulegen?
    Wenn du deine Textboxen generierst, tustese ins Panel, aber zusätzlich auch in die List(Of Textbox) , und dann weiss der Frosch wo die Locken sind oderso.