Item = Um eine indizierte Eigenschaft auszuwerten, muss die Eigenschaft qualifiziert sein, und die Argumente müssen explizit vom Benutzer bereitgestellt werden

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

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

    Item = Um eine indizierte Eigenschaft auszuwerten, muss die Eigenschaft qualifiziert sein, und die Argumente müssen explizit vom Benutzer bereitgestellt werden

    Der Haltepunkt gibt diesen Fehler raus fuer Selecteditems

    VB.NET-Quellcode

    1. Private Sub ListView2_ItemSelectionChanged(sender As Object, e As ListViewItemSelectionChangedEventArgs) Handles ListView2.ItemSelectionChanged
    2. Dim lse As String = CStr(ListView2.SelectedItems.Item(0).Text)
    3. Dim Pfad8 As String = "\Pfad"
    4. Dim combinedpath7 As String = IO.Path.Combine(Pfad1 & Pfad8, String.Concat(lse, ".txt"))
    5. Textbox.Text = System.IO.File.ReadAllText(combinedpath7)
    6. End Sub

    Ein Ausnahmefehler des Typs "System.ArgumentOutOfRangeException" ist in System.Windows.Forms.dll aufgetreten.

    Zusätzliche Informationen: InvalidArgument=Value mit dem Wert 0 ist für index ungültig.

    So also der liest wohl 0 ab und das ist ungueltig also kann es kein datentyp mit zahlen sein.


    Aus meiner Recherche:
    ' Unhandled Exception: System.ArgumentOutOfRangeException:
    ' Index was out of range. Must be non-negative and less than the size of the collection.
    ' Parameter name: index

    Hört sich so an als ob da nix negatives reingehört bzw. nix was die größe überschreitet...den genauen Datentyp wiess ich leider immer noch nicht ; /
    non-negative and less than the size of the collection

    Erklärt ziemlich genau, was das Problem ist.
    0 ist entweder negativ oder nicht kleiner als die größe der Auflistung.
    Da 0 definitiv nicht negativ ist, muss das andere zutreffen.
    Wenn 0 also bereits größer oder gleich die Anzahl an Elementen in der Auflistung ist, dann kann man darauf schließen, dass in der auflistung 0 Elemente sind.
    Denn dann gilt: Index >= 0 UND Index < 0. Und es gibt keinen Index, der diese Bedingung erfüllt. Was logisch ist, denn wenn kein Element in der Auflistung ist, kann man auch keines per Index ansprechen.

    Das ist aber eigentlich eine ziemlich grundliegende Sache.
    "Luckily luh... luckily it wasn't poi-"
    -- Brady in Wonderland, 23. Februar 2015, 1:56
    Desktop Pinner | ApplicationSettings | OnUtils

    Visual_Prog schrieb:

    VB.NET-Quellcode

    1. Dim lse As String = CStr(ListView2.SelectedItems.Item(0).Text)
    Welchen Datentyp stellt .Item(0).Text bereit?
    In welchen Datentyp konvertierst Du diesen mit CStr?
    Was geht folglich zu verbessern?
    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 lse As String = CStr(ListView2.SelectedItems.Item(0).Text)


    Hatte ja zum Teil schon funktioniert, jedoch nur beim ersten angeklickten item. Wurde ein zweites item angeklickt, kam der fehler.

    Habe alle moeglichen Konvertierungen versucht, ich meine jetzt zu wissen dass .item(0) Integer ist.

    Letzendlich lag es einfach an das ListView2.ItemSelectionChanged-Ereignis. Habe es jetzt einfach mic Click umgetauscht und es geht jetzt.

    Visual_Prog schrieb:

    kam der fehler.
    Welche Properties hat Dein LV?
    Was genau hast Du den selektiert? Ein Item in der 2. Spalte?
    Was selektierst Du als zweites?
    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!
    @Rod: Er hat sein Prob doch schon gelöst - auf seine Weise.

    Das Prob war, dass ListView2.ItemSelectionChanged 2 mal feuert, wenn man die Selection ändert: Zunächst wird die Löschung der vorherigen Selection gemeldet, und dann die Neue.
    Und bei der Löschungs-Meldung kann man logischerweise nicht aufs erste selektierte Item zugreifen, denn es gibt ja keines.

    Wäre mal wieder ein Grund, von Listview abzuraten, und zu Databinding zuzuraten.
    ZB Keine Strings in die File-Listbox! zeigt, wie einfach es wäre, Dateien datengebunden zu verwalten - ob das (wie im Sample) Bilder sind oder Texte ist ja unerheblich.