Werte aus mit Combobox oder Trackbar auslesen und in Array speichern--> und zurück

  • VB.NET

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

    Werte aus mit Combobox oder Trackbar auslesen und in Array speichern--> und zurück

    Hallo zusammen,

    nachdem ich schon gefragt habe wie ich über eine Schleife mehrere Comboboxen über eine Schleife kontrollieren kann, dachte ich das das lesen und schreiben ähnlich funktioniert.

    Leider sind meine Versuche dazu im Sand verlaufen.

    Ich möchte aus mehreren Combobox den SelectedItem oder SelectetdIndex Wert auslesen in ein Array speichern und später wieder zurück lesen und eben den Wert in der Combobox wieder einstellen. Ähnliches möchte ich auch für mehrere TrackBars und den Value tun.

    Da sich die Elemente in einem TabControl befinden weiß ich auch nicht ob sich die Sache noch schwieriger gestaltet?!?

    Ich bin für jede Hilfe dankbar.

    Viele Grüße
    @Pippsen Das mit dem TabControl ist unerheblich.
    Hier am Beispiel der Combobox, mit anderen Controls geht das analog.

    VB.NET-Quellcode

    1. Dim index = Combobox1.SelectedIndex
    2. ' mit index was tun

    VB.NET-Quellcode

    1. Dim index = DER_INDEX_HALT ' woher auch immer
    2. Combobox1.SelectedIndex = index

    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!
    @Pippsen Machst Du:

    VB.NET-Quellcode

    1. ComboBox cbx() = { cb1, cb2, cb3, cb4 }
    2. For Each cb in cbx
    3. cb.SelectedIndex = 42
    4. 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!

    Pippsen schrieb:

    Dann gebe ich aber jeder CB den Index 42, oder?
    sehr richtig - steht ja da auch im Code

    Pippsen schrieb:

    Kann ich das for Each durch for 0 to 99 ersetzen?
    nein, denn die Zahlen von 0 bis 99 sind numal keine Comboboxen - von denen hat keine eine .SelectedIndex-Property
    wenn du hingegen 100 comboboxen hättest, dann könnte man anhand der Zahlen jeweils eine davon addressieren - muss man aber richtig anfangen.
    Und glaub mir: 100 Comboboxen möchtest du nicht haben.

    Pippsen schrieb:

    oder?
    Wenn Du da ne 43 einträgst, ist es der Index 43 usw. :rolleyes:
    Wenn 99, dann musst Du alle betroffenen Controls in das Array aufnehmen.
    Aber:

    ErfinderDesRades schrieb:

    Und glaub mir: 100 Comboboxen möchtest du nicht haben.
    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!

    Pippsen schrieb:

    ebenfalls versucht:
    Und?
    Läuft alles?
    Probleme? Wie äußern sich die?
    Abstürze? Welche Codezeile, welche Fehlermeldung?
    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!
    Sorry das ich so wenig Infos geschrieben habe. Da muss ich mich bessern.

    Habe noch einmal alles von sauber geschrieben und nun geht es warum auch immer...

    ​Danke für die Hilfe!

    Quellcode

    1. ​Public Class Form1
    2. Dim Array(4) As Integer
    3. Private Sub Form1_Load(sender As Object, e As EventArgs) Handles Me.Load
    4. End Sub
    5. Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    6. Dim Liste() = {ComboBox1, ComboBox2, ComboBox3, ComboBox4}
    7. Dim i As Integer
    8. For i = i To 3
    9. Array(i) = Liste(i).SelectedIndex
    10. Next
    11. End Sub
    12. Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
    13. Dim Liste() = {ComboBox5, ComboBox6, ComboBox7, ComboBox8}
    14. Dim j As Integer
    15. For j = j To 3
    16. Liste(j).SelectedIndex = Array(j)
    17. Next
    18. End Sub
    19. End Class


    @Pippsen Wozu brauchst Du da 2 Button und ein Array, um Properties von a nach b zu übertragen?
    Dies würde auch gehen:

    VB.NET-Quellcode

    1. Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    2. Dim Liste1() = {ComboBox1, ComboBox2, ComboBox3, ComboBox4}
    3. Dim Liste2() = {ComboBox5, ComboBox6, ComboBox7, ComboBox8}
    4. For i = 0 To 3
    5. Liste2(i).SelectedIndex = Liste1(i).SelectedIndex
    6. Next
    7. End Sub
    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!
    @Pippsen: Wenn Du alle ComboBoxen einer Form in eine Liste packst, kannst Du sie eben wie bisher durchgehen:

    VB.NET-Quellcode

    1. Dim ListOfAllComboBoxes As New List(Of ComboBox)
    2. Private Sub btnGetAllComboBoxesOfThisForm_Click(sender As System.Object, e As System.EventArgs) Handles btnGetAllComboBoxesOfThisForm.Click
    3. Dim tempComboBox As ComboBox = Nothing
    4. For Each lp_Control In Me.Controls
    5. If TypeOf lp_Control Is ComboBox Then
    6. tempComboBox = CType(lp_Control, ComboBox)
    7. ListOfAllComboBoxes.Add(tempComboBox)
    8. End If
    9. Next
    10. End Sub


    Danach kannst Du mit der ListOfAllComboBoxes entweder mit For Each-Schleifen oder mit klassischen For-Schleifen durchgehen. Erinnert aber alles verdächtig an VB6, als man mehreren gleichnamigen Steuerelementen je nen anderen Index geben konnte und sie durch For-Schleifen alle ansprechen konnte. Da fiele evtl. wieder das Schlagwort "Designfehler" in den virtuellen Raum.
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.