Selektiere Elemente einer Listbox werden nach End Sub deselektiert

  • VB.NET

Es gibt 8 Antworten in diesem Thema. Der letzte Beitrag () ist von ErfinderDesRades.

    Selektiere Elemente einer Listbox werden nach End Sub deselektiert

    Hallo,

    ich habe ein (ungewöhnliches) Problem.

    Ich habe eine Listbox und möchte bei drücken von STRG + A alle Elemente auswählen.
    Bis dahin bin ich schon gekommen.
    (Ich habe im Keydown-Event eine Abfrage, ob STRG + A gedrückt wurde, und gehe in diesem Fall mit einer Schleife alle Items durch und wähle sie aus)
    In der Ausführung sieht es so aus, als werden alle Elemente ausgewählt und gleich danach wieder deselektiert.
    Im Einzelschrittmodus werden alle Elemente ausgewählt, so wie es sein soll, allerdings beim "End Sub" werden sämtliche Selektierungen gelöscht.

    Die Listboxen sind im SelectionMode MultiExtended

    Vielen Dank,
    Max

    Quellcode:

    VB.NET-Quellcode

    1. Private Sub LB_C0_Playlist_KeyDown1(sender As Object, e As System.Windows.Forms.KeyEventArgs) Handles LB_C0_Playlist.KeyDown
    2. If e.Control And e.KeyCode = Keys.A Then
    3. Try
    4. For i = 0 To LB_C0_Playlist.Items.Count - 1
    5. LB_C0_Playlist.SetSelected(i, True)
    6. Next
    7. Catch ex As Exception
    8. MessageBox.Show(ex.Message)
    9. End Try
    10. End If
    11. End Sub

    privat2011 schrieb:

    For i = 0 To LB_C0_Playlist.Items.Count - 1
    LB_C0_Playlist.SetSelected(i, True)
    Next

    klar der Selectiert immer nur einen. Das müsste eigentlich aussehen als würde der Blaue Balken durch die Box durchlaufen.
    Es müsste noch Select geben. Such mal danach.

    Und warum packst du das ganze in eine Try ?

    das ist nicht nötig.

    Bernd
    Also soll ich das so machen?

    VB.NET-Quellcode

    1. If e.Control And e.KeyCode = Keys.A Then
    2. For i = 0 To LB_C0_Playlist.Items.Count - 1
    3. LB_C0_Playlist.SetSelected(i, True)
    4. Next
    5. LB_C0_Playlist.Select()
    6. End If


    Das geht auch nicht. Im Einzelschrittmodus sieht man, dass alle Elemente ausgewählt sind - bis zum "End Sub".
    Noch ne andere Idee?

    VB.NET-Quellcode

    1. Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
    2. ListBox1.SelectionMode = SelectionMode.MultiSimple
    3. End Sub
    4. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    5. For i = 0 To ListBox1.Items.Count - 1
    6. ListBox1.SelectedIndex = i
    7. Next
    8. End Sub


    Kangaroo hat recht. Dein Code geht auch. Ich habe das Multi ... übersehen

    Sorry
    Damit gehts, das ist immerhin eine Möglichkeit.

    Wieso geht es denn nicht mit MultiExtended? Mit MultiSimple geht die Elementauswahl - meiner Meinung nach - komisch und das DragDrop ist auch nicht mehr das Wahre.

    Gibts denn keine Möglichkeit das mit MultiExtended zu machen?
    Zumal im Einzelschrittmodus eindeutig zu erkennen ist, dass das End Sub alle Elemente deselektiert und keine andere Anweisung ausgeführt wird...