Kampf mit der CheckedListBox und dem CheckedListview

  • VB.NET
  • .NET (FX) 3.0–3.5

Es gibt 5 Antworten in diesem Thema. Der letzte Beitrag () ist von ITFuzzi.

    Kampf mit der CheckedListBox und dem CheckedListview

    Hallo,

    ich versuche eine Liste mit Checkboxen darzustellen und kämpfe mit folgenden Problemen:

    Die CheckedListBox
    1. die CheckedListBox funktioniert eigentlich wie geplant, nur die Suchfunktion ist bescheiden: Markiere Anton und Tippe M und A. Wäre schön, wenn die Markierung auf Marta stünde, sie springt aber erst auf Marta und dann wieder auf Anton. Da es sich um grosse Listen handelt benötige ich diese Suchfunktion zum einfacheren Handling.

    2. mache ich in der CheckedListBox einen Doppelclick auf das Controllkästchen, dann bleibt der Zähler darunter auf 0, mache ich dann noch irgendetwas in der Liste wird der Zähler aktualisiert, warum nicht gleich so?

    Der CheckedListview
    1. wie kann ich in dem CheckedListview nur eine Spalte einstellen?

    2. die Suche wie oben funktioniert wie gewünscht, auch das markieren, aber der Zähler zeigt die unmöglichsten Ergebnisse. Spielt mal darin rum, es ist zum Haare raufen. Was mache ich da falsch ?

    Es sind erste Gehversuche von VB auf VB2008. Das Problem habe ich ohne Schnickschnack im Code dargestellt.
    Habe das Internet schon umgegraben, Haare hab ich auch keine mehr,
    bin dankbar für jede Hilfe.

    VB.NET-Quellcode

    1. Public Class Form1
    2. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    3. End
    4. End Sub
    5. Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
    6. 'Fülle Listen
    7. CheckedListBox1.Items.Add("Anton")
    8. CheckedListBox1.Items.Add("Berta")
    9. CheckedListBox1.Items.Add("Caesar")
    10. CheckedListBox1.Items.Add("Dora")
    11. CheckedListBox1.Items.Add("Emil")
    12. CheckedListBox1.Items.Add("Friedrich")
    13. CheckedListBox1.Items.Add("Gustav")
    14. CheckedListBox1.Items.Add("Heinz")
    15. CheckedListBox1.Items.Add("Ingo")
    16. CheckedListBox1.Items.Add("Julia")
    17. CheckedListBox1.Items.Add("Karl")
    18. CheckedListBox1.Items.Add("Ludwig")
    19. CheckedListBox1.Items.Add("Marta")
    20. CheckedListBox1.Items.Add("Norbert")
    21. CheckedListBox1.Items.Add("Otto")
    22. CheckedListBox1.Items.Add("Paula")
    23. ListBox1.Items.Add("Anton")
    24. ListBox1.Items.Add("Berta")
    25. ListBox1.Items.Add("Caesar")
    26. ListBox1.Items.Add("Dora")
    27. ListBox1.Items.Add("Emil")
    28. ListBox1.Items.Add("Friedrich")
    29. ListBox1.Items.Add("Gustav")
    30. ListBox1.Items.Add("Heinz")
    31. ListBox1.Items.Add("Ingo")
    32. ListBox1.Items.Add("Julia")
    33. ListBox1.Items.Add("Karl")
    34. ListBox1.Items.Add("Ludwig")
    35. ListBox1.Items.Add("Maria")
    36. ListBox1.Items.Add("Marta")
    37. ListBox1.Items.Add("Monika")
    38. ListBox1.Items.Add("Norbert")
    39. ListBox1.Items.Add("Otto")
    40. ListBox1.Items.Add("Paula")
    41. ListView1.Clear()
    42. ListView1.View = View.List
    43. ListView1.CheckBoxes = True
    44. ListView1.Items.Add("Anton")
    45. ListView1.Items.Add("Berta")
    46. ListView1.Items.Add("Caesar")
    47. ListView1.Items.Add("Dora")
    48. ListView1.Items.Add("Emil")
    49. ListView1.Items.Add("Friedrich")
    50. ListView1.Items.Add("Gustav")
    51. ListView1.Items.Add("Heinz")
    52. ListView1.Items.Add("Ingo")
    53. ListView1.Items.Add("Julia")
    54. ListView1.Items.Add("Karl")
    55. ListView1.Items.Add("Ludwig")
    56. ListView1.Items.Add("Maria")
    57. ListView1.Items.Add("Marta")
    58. ListView1.Items.Add("Monika")
    59. ListView1.Items.Add("Norbert")
    60. ListView1.Items.Add("Otto")
    61. ListView1.Items.Add("Paula")
    62. ListView1.Items.Add("Quietschi")
    63. ListView1.Items.Add("Rolf")
    64. ListView1.Items.Add("Siegfried")
    65. ListView1.Items.Add("Tobi")
    66. ListView1.Items.Add("Ursula")
    67. ListView1.Items.Add("Victor")
    68. ListView1.Items.Add("Willi")
    69. ListView1.Items.Add("Xaver")
    70. ListView1.Items.Add("Yvonne")
    71. ListView1.Items.Add("Zara")
    72. ListView1.Items.Add("xxx")
    73. Label4.Text = "0"
    74. Label5.Text = "0"
    75. End Sub
    76. Private Sub ListView1_ItemCheck1(ByVal sender As Object, _
    77. ByVal e As System.Windows.Forms.ItemCheckEventArgs) Handles ListView1.ItemCheck
    78. Label5.Text = ListView1.CheckedItems.Count
    79. End Sub
    80. Private Sub CheckedListBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CheckedListBox1.SelectedIndexChanged
    81. Label4.Text = CheckedListBox1.CheckedIndices.Count
    82. End Sub
    83. End Class
    1. in eine CheckedListbox kann man eiglich keine gscheite Suchfunktion einbauen, sondern dafür braucht man zusätzliche Controls, und ühaupt ein intelligentes Konzept, wie die Sucherei im einzeln ablaufen soll.
      Also sample und Konzeptions-hilfe lade dir mal AutoCompletion advanced - aber das ist schon sehr advanced, aber wie gesagt sieh es als Konzeptions-Hilfe an.
    zu den anneren Punkten sag ich jetzt nix, der eine ist schon reichlich umfangreich genug.
    Vergiss die ListBox, dass ist nur das Controll zum Anzeigen der Daten, benutze eine Binding Soruce in der kannst du nämlich auch mit Filter Ausdrücken / Filter Exressions arbeiten. Dass dürfte dein Problem gut in denn griff kriegen, desweitern kannst du dann von vorne rein den support für etweilige Datenbanck Verbindungen einbauen.

    LG, J.Herbrich
    Hallo,

    also mit vergiss es konnte ich mich nicht abfinden. So habe ich weiter gesucht und die Lösung gefunden.

    Zu 1: nur eine Spalte erhalte ich, wenn ich View.Details und mit Columns.Add eine Spalte mit einer gewissen Breite definiere
    Zu 2: es wird unterschieden in ListView1_CheckedItemsChanged und CheckBox1_CheckedChanged

    ich habe bis zu 120000 Rechner aus dem Active Directory eingelesen und kann jetzt einfach durch Eintippen des Rechnernamens darauf springen :)

    siehe Beispiel, probiert es mal aus, geht auf den ersten Eintrag, gebt xyz ein und die Markierung wandert genau dahin,
    ein click auf die Checkbox zählt das linke Label einen hoch etc

    genauso hatte ich mir das vorgestellt, geht doch :)
    VG

    Quellcode

    1. Public Class Form1
    2. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    3. End
    4. End Sub
    5. Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
    6. ListView1.Clear()
    7. ListView1.View = View.Details
    8. ListView1.CheckBoxes = True
    9. 'Grösse von Listview - Checkbox : 264-21
    10. ListView1.Columns.Add("Spalte xy", 243, HorizontalAlignment.Left)
    11. ListView1.Items.Add("Anton")
    12. ListView1.Items.Add("Berta")
    13. ListView1.Items.Add("Caesar")
    14. ListView1.Items.Add("Dora")
    15. ListView1.Items.Add("Emil")
    16. ListView1.Items.Add("Friedrich")
    17. ListView1.Items.Add("Gustav")
    18. ListView1.Items.Add("Heinz")
    19. ListView1.Items.Add("Ingo")
    20. ListView1.Items.Add("Julia")
    21. ListView1.Items.Add("Karl")
    22. ListView1.Items.Add("Ludwig")
    23. ListView1.Items.Add("Marta")
    24. ListView1.Items.Add("Monika")
    25. ListView1.Items.Add("Norbert")
    26. ListView1.Items.Add("Otto")
    27. ListView1.Items.Add("Paula")
    28. ListView1.Items.Add("Quietschi")
    29. ListView1.Items.Add("Rolf")
    30. ListView1.Items.Add("Siegfried")
    31. ListView1.Items.Add("Tobi")
    32. ListView1.Items.Add("Ursula")
    33. ListView1.Items.Add("Victor")
    34. ListView1.Items.Add("Willi")
    35. ListView1.Items.Add("Xaver")
    36. ListView1.Items.Add("Yvonne")
    37. ListView1.Items.Add("Zara")
    38. ListView1.Items.Add("xxx")
    39. ListView1.Items.Add("xyx")
    40. ListView1.Items.Add("xyz")
    41. ListView1.Items.Add("Maria")
    42. ListView1.Items.Add("Marwin")
    43. ListView1.Items.Add("Manfred")
    44. ListView1.Items.Add("Ulrike")
    45. ListView1.GridLines = True
    46. ListView1.Sorting = SortOrder.Ascending
    47. ListView1.FullRowSelect = True
    48. ListView1.Scrollable = True
    49. Label1.Text = "0"
    50. Label2.Text = "0"
    51. End Sub
    52. Private Sub ListView1_CheckedItemsChanged _
    53. (ByVal sender As Object, _
    54. ByVal e As System.EventArgs) _
    55. Handles ListView1.SelectedIndexChanged
    56. Label2.Text = ListView1.SelectedItems.Count
    57. End Sub
    58. Private Sub CheckBox1_CheckedChanged(ByVal sender As System.Object, _
    59. ByVal e As System.EventArgs) _
    60. Handles ListView1.ItemChecked
    61. Label1.Text = ListView1.CheckedItems.Count
    62. End Sub
    63. End Class