Mehrere Comboboxen füllen, nur eine füllt sich?!

  • VB.NET

Es gibt 25 Antworten in diesem Thema. Der letzte Beitrag () ist von rade23.

    Und was macht der Code wenn du deine Variable MaterialartReader nicht global deklarierst, sondern Lokal in Form Load event, so das inhalt der Datei in Form load eingelesen wird. Vor end sub schreibst :
    cmb_Materialart1.SelectedIndex = 0
    cmb_Materialart2.SelectedIndex = 0
    Alle Textboxen haben unterschiedliche Einträge, bei den Comboboxen hab ich beide auf den gleichen Index gesetzt, dass muss nicht unbedingt sein,
    aber das ist ja letztendlich auch nicht wichtig...Hab es auch mit unterschiedlichen Index bzw. Items ausprobiert

    Ich hab jetzt mal innerhalb des Subs den Reader deklariert, dreimal dürft ihr raten: Still the same!!!
    Kurze Anekdote: Mein VB hat seit meinem Umstieg auf 64bit eine kleinen Macke:
    Bei einem Fehler in der Form_Load-Prozedur verlässt es diese einfach, und macht weiter, indem es ohne Fehlermeldung die Form anzeigt.
    Dies ist mir auch bei diesem Problemchen hier passiert.
    Wenn ich den Code aus Form_Load in eine andere Prozedur - zB. einen Button_Click auslagere, arbeitet das Programm diese Prozedur ganz brav ab...
    ...und meldet sich - wieder zurück zum Thema - wie es sich gehört:

    mit einer ArgumentOutOfRangeException
    InvalidArgument=Value mit dem Wert 0 ist für SelectedIndex ungültig.
    Parametername: SelectedIndex

    Du weist einer leeren Combobox einen SelecteIndex zu...und füllst anschließend die Boxen

    Kommentiere diese beiden Zeilen mal zum Test aus...

    VB.NET-Quellcode

    1. cmb_Materialart1.SelectedIndex = 0
    2. cmb_Materialart2.SelectedIndex = 0


    Folgende Reihenfolge halte ich für angebracht:

    1. Die Daten aus der Datei auslesen
    2. Die Comboboxen füllen
    3. und erst dann den SelectedIndex setzen
    @ der Kurt: aber genau diese Reihenfolge ist doch vorhanden?!

    Ich habe jetzt mal eine ältere Sicherheitskopie rausgeholt und habe daran weitergearbeitet.
    die Textbox-,Radiobutton-,und CheckedBox-Eigenschaften hab ich aus dem Formload-Code rausgenommen und in den Eigenschaften verändert. Die Comboboxen füllen sich jetzt auch alle! Trotzdem gibts wieder ein Problem!
    Hiernochmal der Code:

    VB.NET-Quellcode

    1. Private Sub frm_Lasche_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    2. pnl_Lasche_links.Height = Me.Height - MenuStrip1.Height - 38 '38 müsste Höhe des Formularrahmen sein
    3. 'woher bekomme ich die exakte Höhe des Formular-Rahmens???
    4. 'Siehe auch frm_Lasche_SizeChanged...
    5. 'Materialart-Combobox füllen:
    6. For Each line As String In MaterialartReader
    7. cmb_Materialart1.Items.Add(line)
    8. cmb_Materialart2.Items.Add(line)
    9. Next
    10. 'Verbindungsmittel-Combobox füllen:
    11. For Each line As String In VMReader
    12. cmb_VM.Items.Add(line)
    13. Next
    14. 'Werte anzeigen beim Start:
    15. cmb_NKL.SelectedIndex = 1
    16. cmb_KLED.SelectedIndex = 2
    17. cmb_Materialart1.SelectedIndex = 0
    18. cmb_Materialart2.SelectedIndex = 2
    19. cmb_VM.SelectedIndex = 1
    20. cmb_Stabdübel_Durchmesser.SelectedIndex = 3
    21. txt_Stabdübellänge.Text = CInt(txt_Breite1.Text) + 2 * CInt(txt_Breite2.Text)
    22. lbl_kmod1.Text = fkt.fkt_kMod(cmb_Materialart1.SelectedItem, cmb_NKL.SelectedItem, cmb_KLED.SelectedItem)
    23. lbl_kmod2.Text = fkt.fkt_kMod(cmb_Materialart2.SelectedItem, cmb_NKL.SelectedItem, cmb_KLED.SelectedItem)
    24. lbl_kmod_gew.Text = fkt.fkt_kMod_gew(lbl_kmod1.Text, lbl_kmod2.Text)
    25. End Sub


    Nun füge ich folgendes Textchanged ein:

    VB.NET-Quellcode

    1. Private Sub txt_Breite1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txt_Breite1.TextChanged
    2. txt_Stabdübellänge.Text = (CInt(txt_Breite1.Text) + 2 * CInt(txt_Breite2.Text)).ToString
    3. End Sub

    Immer noch alles wünderbar, füge ich aber nun das 2.Textchanged hinzu...

    VB.NET-Quellcode

    1. Private Sub txt_Breite2_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txt_Breite2.TextChanged
    2. txt_Stabdübellänge.Text = (CInt(txt_Breite1.Text) + 2 * CInt(txt_Breite2.Text)).ToString
    3. End Sub


    ...kommt eine Fehlermeldung:
    Es ist keine Quelle verfügbar...ungültige Konvertierung von der Zeichenfolge im Typ Integer..

    Woran liegt das?

    Danke schonmal...