Combobox & SelectedIndex

  • VB.NET
  • .NET (FX) 4.5–4.8

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

    Combobox & SelectedIndex

    hallo :D

    ich habe mal wieder ein problem, das ich nicht verstehe.

    VB.NET-Quellcode

    1. If tc.SelectedIndex < tc.TabCount - 3 Then
    2. cbName = cbDir.Name & "_" & tc.SelectedTab.Name
    3. Box_LoadBox(cbDir, True, False, False, 20, cbName)
    4. If cbDir.Items.Count = 0 Then
    5. cbDir.Items.Add(GetMusicPath)
    6. End If
    7. cbDir.SelectedIndex = 0 '<-- Fehler
    8. oldTargetName = cbName
    9. Else
    10. oldTargetName = Nothing
    11. cbDir.Items.Clear()
    12. End If


    wenn ich den selectedIndex setzte, springt der compiler einfach raus....
    ich habe mir das jetzt x-mal angeschaut...im debugger ist selectedIndex = -1 und Items-Count = 1
    ich habe es auch einen Try/Catch versucht...nützt alles nix...

    hilfe !

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „woeh“ ()

    Beschreib das mal deutlicher! Ich verstehe nicht wirklich was dein Probelm ist.

    cbDir.SelectedIndex = 0 '<-- Fehler



    Edit: Wird dir SelectedIndex nixht auf 0 gesetzt? Vllt. wird dieser Code ja auch nie erreicht?
    Cloud Computer? Nein Danke! Das ist nur ein weiterer Schritt zur totalen Überwachung.
    „Wer die Freiheit aufgibt, um Sicherheit zu gewinnen, wird am Ende beides verlieren.“
    Benjamin Franklin

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

    Wenn ich einer datenungebundenen, leeren ComboBox ein Item hinzufüge und danach den SelectedIndex auf 0 setze, wird jenes hinzugefügte Item ausgewählt. Daher sind m.E. Sachen am Werk, die noch nicht gepostet wurden.
    Wenn Du schon sagst, dass ein Fehler kommt, dann bitte immer die Fehlerbeschreibung des Compilers 1:1 mitposten, am besten als Screenshot, damit wir auch sehen, wo tatsächlich der Fehler auftritt.
    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.

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

    Ich wette um ein Byte das ein Fehler wie dieser Schuld ist:

    VB.NET-Quellcode

    1. If True = False Then
    2. 'unreachable code
    3. MessageBox.Show("Hä? wie das denn?")
    4. End If

    Cloud Computer? Nein Danke! Das ist nur ein weiterer Schritt zur totalen Überwachung.
    „Wer die Freiheit aufgibt, um Sicherheit zu gewinnen, wird am Ende beides verlieren.“
    Benjamin Franklin
    @NoIde: Unter der Voraussetzung, dass Post#1 mit dem Kommentar zutrifft: Wie sollte an der Stelle der Compiler meckern, wenn er dort gar nicht vorbeikommt?
    Aber vielleicht interpretier ich die Beschreibung

    woeh schrieb:

    springt der compiler einfach raus
    auch falsch. Dann hättest Du recht und @woeh sollte erstmal z.B. mittels Haltepunkt prüfen, ob der Compiler dort an Zeile#10 überhaupt vorbeikommt.
    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.
    ich habe eine Combobox cbDir.
    diese wird mit

    VB.NET-Quellcode

    1. Box_LoadBox(cbDir, True, False, False, 20, cbName)


    gefüllt.

    in meinem beispiel wird kein item hinzugefügt, also Item.Count = 0
    dann wird ein pfad der combobox hinzugefügt, wenn Item.Count = 0 (in meinem fall)

    VB.NET-Quellcode

    1. If cbDir.Items.Count = 0 Then
    2. cbDir.Items.Add(GetMusicPath)
    3. End If


    da jetzt cbDir.Items.Count = 1 sein muß setzte ich den selectedIndex auf 0
    und das funktioniert nicht...der debugger bricht den Sub ohne fehlermeldung ab

    wenn ich selectedIndex auf 1 setzte kommt auch die fehlermeldung
    "System.ArgumentOutOfRangeException"
    stimmt ja auch, weil Count = 1 ist
    Ich habe einfach mal vermutet, das nicht der kompiler meckert, sondern das einfach nicht der Index gesetzt wird. Er springt ja raus, was auch immer damit gemeint ist.

    Edit: Gibt es andere Stellen im Code wo du den SelectedIndex setzt?

    Wenn du einen BreakPoint in Zeile 12 diese Code machst und dir da den Index anschaust, ist er dort denn 0? Wird woanders schon ein Item hinzugefügt?
    Cloud Computer? Nein Danke! Das ist nur ein weiterer Schritt zur totalen Überwachung.
    „Wer die Freiheit aufgibt, um Sicherheit zu gewinnen, wird am Ende beides verlieren.“
    Benjamin Franklin
    Wie ist denn am Haltenpunkt bei Zeile#12 der SelectedIndex? Setz mal einen Haltepunkt bei Zeile#16. Nicht, dass zufällig noch danach die Items gelöscht werden. In welcher Sub ist der Code? In einem EventHandler? Wenn ja: in welchem?
    Probier auch mal, dass Du nen Haltepunkt an Z#12 setzt und von dort per F9 mit Einzelschritten weitermachst. Vielleicht wird noch mehr Code ausgeführt als Du denkst.

    ##########

    btw: Try/Catch springt nur bei auftretenden Exceptions an und sollte nur dann verwendet werden, wenn eine Ex nicht anderweitig abwendbar ist, denn Try/Catch ist ein heißes Eisen.
    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.
    der aufruf befindet sich in

    VB.NET-Quellcode

    1. Private Sub tc_SelectedIndexChanged(sender As Object, e As EventArgs) Handles tc.SelectedIndexChanged

    tc = Tabcontrol

    und der einzige Haltepunkt ist eben der bei cbDir.SelectedIndex.
    setzte ich den Haltepunkt einen befehl weiter habe ich wieder diese schleife die nicht endet.

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

    Nutzt du vllt. auch das SelectIndexChanged der ComboBox? Wenn du dort den SelectedIndex des TabControls änderst, würde das eine Endlosschleife verursachen.

    Warum steht nichts von der Endlosschleife im Startpost?
    Cloud Computer? Nein Danke! Das ist nur ein weiterer Schritt zur totalen Überwachung.
    „Wer die Freiheit aufgibt, um Sicherheit zu gewinnen, wird am Ende beides verlieren.“
    Benjamin Franklin
    Im TabControl-SelectedIndexChanged-EventHandler? Nicht, dass der TabControl-SelectedIndex sich durch irgendwelchen Code auch noch dauernd ändert. Dann werden nämlich die ComboBox-Items gelöscht.

    woeh schrieb:

    und der einzige Haltepunkt ist eben der bei cbDir.SelectedIndex.
    Kapier ich net. Haltepunkte kannst Du doch setzen wie Du lustig bist. Ist ein gutes Debugging-Werkzeug.

    woeh schrieb:

    setzte ich den Haltepunkt einen befehl wieder habe ich wieder diese schleife die nicht endet.
    Ich vermute mal: "Einen Befehl weiter." Na, dann hast Du wohl ne Endlosschleife durch das Abonnieren des ComboBox-SelectedIndexChanged-Events. Wenn da was über den TabControl-SelectedIndex drinsteht, wird's n Endloszyklus.
    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.

    woeh schrieb:

    der sub wird einfach beendet
    Form_Load?
    Mach das mal im Form_Shown-Event.
    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!
    @woeh Das passt aber nicht zu Deiner Fehlerbeschreibung. :/
    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!