Erster Versuch an CheckListBox - Wie abartig ist mein Ansatz?

  • VB.NET
  • .NET (FX) 4.0

Es gibt 11 Antworten in diesem Thema. Der letzte Beitrag () ist von ~blaze~.

    Erster Versuch an CheckListBox - Wie abartig ist mein Ansatz?

    Hallo,

    heute zum ersten mal, soweit ich mich erinnern kann, versuche ich mich an einer Checklistbox.

    Mein Code Funktioniert... aber dennoch beschleicht mich das Gefühl, dass dies recht pervers is, was ich da konstruiert hab :) Was meint Ihr dazu?

    Viele Grüße
    Michl

    VB.NET-Quellcode

    1. Private Sub CheckboxListenChecken()
    2. Dim _str As String = BS_abgelegt_BSArtenTextBox.Text
    3. Dim strArr() As String = _str.Split(";")
    4. For i As Integer = 0 To CheckedListBox1.Items.Count - 1
    5. For Each element As String In strArr
    6. If CheckedListBox1.Items(i).ToString = element Then
    7. CheckedListBox1.SetItemCheckState(i, CheckState.Checked)
    8. End If
    9. Next
    10. Next
    11. End Sub
    12. Private Sub speichern()
    13. Try
    14. Dim _clbS() As Char
    15. For x = 0 To CheckedListBox1.CheckedItems.Count - 1
    16. _clbS = _clbS & CheckedListBox1.CheckedItems(x).ToString & ";"
    17. Next
    18. BS_abgelegt_BSArtenTextBox.Text = _clbS
    19. Me.Validate()
    20. Me.Metalpruefungen_abgelegtBindingSource.EndEdit()
    21. Me.TableAdapterManager.UpdateAll(Me.MSDB2DataSet)
    Ist die Anzahl der Items in deiner Checked Listbox dynamisch oder fest vorgegeben?
    "Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. Lehre einen Mann zu fischen und du ernährst ihn für sein Leben."

    Wie debugge ich richtig? => Debuggen, Fehler finden und beseitigen
    Wie man VisualStudio nutzt? => VisualStudio richtig nutzen
    @michl75 Hat es Zweck Dich zu einem DataGridView zu überreden mit ner CheckBox-Spalte?
    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!
    Hi
    auch CheckedListBox besitzt die Möglichkeit, Datenbindung zu betreiben. D.h. binde an eine Liste - wie auch bei ComboBox, ListBox, usw. und führe die Operationen auf dieser durch.
    Beachte, dass du die DisplayMember-Eigenschaft setzen solltest und die TextBox mit diesem Member abgleichen solltest.
    Was ebenfalls für dich bzgl. "ist enthalten" relevant sein könnte, wäre, HashSet(Of T) oder Array.IndexOf. Beachte allerdings, dass ersteres keine Groß-und Kleinschreibung unterstützt und du diese dem HashSet als Comparer im Konstruktor übergeben musst (Eine der von der StringComparer-Klasse angebotenen Eigenschaften sollte für dich zutreffen). Du solltest außerdem nicht nur Split durchführen, sondern die Ergebnisse durch Trim anpassen.

    Schau' dir außerdem String.Join an. Diesem kannst du ein Enumerable übergeben.

    Viele Grüße
    ~blaze~

    Fakiz schrieb:

    die Zeilen 17 & 20 ...
    Weil @michl75 ein Strict Off-Progger ist. ;)
    Selbst da kommt noch eine Warnung, dass die Variable _clbS verwendet wird, bevor ihr etwas zugewiesen wurde.
    @michl75
    Gewöhne Dir bitte den Stil an, den die hier helfenden Kollegen bei einem Hilfe Suchenden voraussetzen. 8o
    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!
    Hallo :)

    Danke für eure Antworten, bin leider nicht früher dazugekommen euch zu antworten.

    Als über ein DGV habe ich nachgedacht, da es aber nur ein paar Einträge sind... naja, da war ich unentschlossen... Aber ich habe das nun so gelöst:

    @RodFromGermany : Option Strict on habe ich mir angewöhnt.... gugst du Bild :) ... aber Fehler hats mir keine ausgeworfen!

    VB.NET-Quellcode

    1. Private Sub CheckboxListenChecken()
    2. Dim _str As String = BS_abgelegt_BSArtenTextBox.Text
    3. Dim strArr() As String = _str.Split(";")
    4. For i As Integer = 0 To CheckedListBox1.Items.Count - 1
    5. For Each element As String In strArr
    6. If CheckedListBox1.Items(i).ToString = element Then
    7. CheckedListBox1.SetItemCheckState(i, CheckState.Checked)
    8. End If
    9. Next
    10. Next
    11. End Sub


    Keine Fehlermeldung, funktioniert wunderbar...

    Grüße Michl
    Bilder
    • 0001.JPG

      16,62 kB, 375×98, 105 mal angesehen
    • 0002.JPG

      13,27 kB, 361×119, 104 mal angesehen

    michl75 schrieb:

    Option Strict on habe ich mir angewöhnt
    Das wage ich zu bezweifeln, da

    michl75 schrieb:

    Dim strArr() As String = _str.Split(";")
    mit Option Strict On (was etwas anderes als Option Explicit On ist) nicht gehen würde, da die String.Split-Funktion nur einen Char akzeptiert. ";" ist aber ein String. Der wird zwar in einen Char konvertiert. Aber nur bei Option Strict Off.
    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.