C# Unable to cast object of type 'System.Windows.Forms.ListView' to type 'FileTool.IListView'.

aw48

Cadet 4th Year
Registriert
Dez. 2013
Beiträge
124
Hallo guten Tag,

meine Daten : VSE 10, c#, WinForms

mein Projekt :

interface IListView
class MyListViewBase : ListView, IListView
class MyListViewOne : MyListViewBase
class MyListViewTwo : MyListViewBase

IListView MyListView = new MyListViewOne();

jetzt kommt das Problem : MyListView = (IListView)GlobalListView; (GlobalListView wurde mit Designer erstellt)
beim erstellen kein Problem, aber zur Laufzeit Fehler wie im Titel angegeben.
ich habe hier schon alles mögliche ohne Erfolg ausprobiert.
Wie kann die Basis-Klasse ein ListView-Objekt referenzieren ?

Kann jemand helfen ? Am liebsten wäre mir ein Hinweis auf entsprechende Literatur, Tutorial usw.
Vielen Dank im voraus
 
Der cast geht ja auch nicht (s. Fehlermeldung im Titel)
Aber was geht dann ?
 
Lösung:
Wie geht man vor: https://docs.microsoft.com/en-us/dotnet/api/system.windows.forms.listview?view=net-5.0 ist die Doku zum Typ von GlobalListView, wie du direkt siehst, implementiert Forms.ListView nicht IListView. Daher geht der Cast nicht.

Warum ist da IListView nicht implementiert? Weil das zwei verschiedene Listen sind. Forms.ListView ist ein GUI Element, IListView ein Interface für Listen. Eine ListView ist aber keine Liste, sondern viel mehr und auch nicht eine echte Unterklasse davon.

Lösung: Von Hand kopieren. Schau dir mal ListView.Items an, das implementiert wenigstens IList (wenn auch nicht IListView).

BTW: IList implements IEnumerable, daher solltest du mit LINQ die Elemente bearbeiten können.
 

Ähnliche Themen

Antworten
7
Aufrufe
1.611
Antworten
13
Aufrufe
4.880
W
Zurück
Oben