Bestimmten Bereich einer Listbox wählen UND Komisches Zeichen - Rechtecke - hinter Items

  • VB.NET

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

    Bestimmten Bereich einer Listbox wählen UND Komisches Zeichen - Rechtecke - hinter Items

    Zu meinem ersten Problem:

    Ich habe in einer Listbox z.B. 10 Items (Zahlen). Die Funktion "AnzahlPositionen" gibt die Positionen wieder bis ein neuer Artikel kommt. Wenn "AnzahlPositionen" z.B. den Wert "5" wiedergibt möchte ich, dass die letzten "5" Einträge aus der Listbox (Somit 10 bis 5) zusammengezählt werden.

    Zu meinem zweiten Problem:

    Ich hole mir Items (Artikel als Text) in eine Combobox. Warum erscheinen hinter jedem Item so komische Rechtecke (immer 2!) und wie bekomme ich diese weg?
    Setz dir ne Variable, in der du dein Ergebnis speichern willst (z.B. x), dann lässt du nen for-loop laufen, der von GesamtanzahlItems bis GesamtAnzahlItems - AnzahlZuAddierenderItems läuft und bei jedem Step den Counter -=1 setzt. Dann kannst du den Counter als Index fürs Listview.Items -Array nehmen und jedes mal den entsprechenden Wert auf x addieren.
    Vielen Dank erstmal, aber wie mache ich das mit dem Array? Sorry, ich glaub ich hab sowas noch nie gemacht. Hab ich folgenden Code richtig umgesetzt?
    For x = 0 To Intern.ListBoxLfm.Items.Count - 1
    GesamtItems = x
    Next

    For y = GesamtItems To GesamtItems - AnzahlPositionen
    Do Until AnzahlPositionen = -1
    Loop
    Next y
    Hat denn jemand eine Idee bezüglich diesen komischen Rechtecken wie oben beschrieben? ?(
    Ich denke mal, dass da vbCrLf- oder ähnliche Zeichen hinten dran sind. Wenn Du das Control füllst, rufe das so auf:

    VB.NET-Quellcode

    1. xxx.Items.Add(MyText.Trim)
    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!

    VB.NET-Quellcode

    1. Dim value as Interger
    2. Dim start as Integer = Intern.ListBoxLfm.Items.Count - 1 'Die Deklaration dienen nur zur Übersicht, natürlich kannst du die Rechnungen auch direkt in der Schleife angeben
    3. Dim end as Integer = start - numericUpDown1.Value 'numericUpDown1.Value muss natürlich noch durch die Variable ersetzt werden, die angibt, wie viele Items addiert werden sollen
    4. For i as Integer = start To end Step -1
    5. value += Integer.Parse(Intern.ListBoxLfm.Items(i))
    6. Next


    Alles aus dem Kopf geschrieben und ich habs chon ewig kein VB mehr benutzt, gut möglich also dass das ein oder andere nicht ganz korrekt ist.
    Ich bekomme bei diesem Code:

    VB.NET-Quellcode

    1. For i As Integer = AnzahlPositionenEnde To GesamtItems Step -1
    2. ErgebnisLfm = ErgebnisLfm + Val(Intern.ListBoxLfm.Items(i))
    3. Next i


    Immer folgende Fehlermeldung:

    "InvalidArgument=Value mit dem Wert 78(Irgendeine Zahl) ist für index ungültig. Parametername: index"

    Was mach ich denn nun schon wieder falsch? 8|
    ich denkeja, du solltest dir Datensätze basteln, mit denen man auch vernünftig rechnen kann.
    Stichwort: Trennung von Daten und Gui, weil mit Listboxen rechnet man nicht, nichtmal mit Strings kann man rechnen.


    Und machma Option Strict On!, dass du alle Fehler, die drin sind, auch siehst.
    Dassis Quatsch.

    Wenn du dir datensätze bastelst, die eine geeignete Property bereitstellen (Typ Integer bietet sich für "'Anzehl" an), kannst du mit diesen Datensätzen, und deren Property rechnen.

    Niemand kannn dich zwingen, mit ListboxItems zu rechnen.

    Ich empfehle immer, um ordentliche Datensätze zu erhalten, sich ein typiesiertes Dataset anzulegen, gugge etwa Most Primitive.
    Sone Datatable kriegst du in deine Listbox, indem du die BindingSource als DataSource zuweist, und als Listbox.Displaymember halt den Namen deiner Property angibst.

    kann man alles im Form-Designer machen.