Autor Beitrag
LUCE
Hält's aus hier
Beiträge: 6



BeitragVerfasst: Do 18.08.11 11:40 
Hallo,

ich bin C# Neuling und habe folgendes Problem:

Ich habe eine Liste erstellt, die Objekte der Klasse Filme enthällt.
Jeder Film hat die Eigenschaften: Filmtitel, Genre, erscheinungsjahr usw.

Alle Filme werden mir nun in einer ListBox mit ihrem Titel angezeigt.

Mein Ziel ist es nun, dass nur Filme eines bestimmten Genres in der ListBox aufgeführt werden. Wie geht das?


Zuletzt bearbeitet von LUCE am Do 18.08.11 12:11, insgesamt 2-mal bearbeitet
Ralf Jansen
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 4708
Erhaltene Danke: 991


VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
BeitragVerfasst: Do 18.08.11 11:56 
Du hast doch bestimmt schon eine Anzeige der ungefilterten Liste in der Listbox, oder? Zeig uns doch kurz den Code dann können wir dir dazu ein passendes Filterverfahren zeigen.
LUCE Threadstarter
Hält's aus hier
Beiträge: 6



BeitragVerfasst: Do 18.08.11 12:11 
Also meine Liste sieht wie folgt aus:
ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
Filme.Add(new Film());
Filme[0].FilmTitel = "12 Monkeys";
Filme[0].Genre = "Mystery";
Filme[0].Erscheinungsjahr = 1995;
Filme[0].Laufzeit = 129;
Filme[0].IMDBWertung = 8.1;

Filme.Add(new Film());
Filme[1].FilmTitel = "City of God";
Filme[1].Genre = "Action";
Filme[1].Erscheinungsjahr = 2002;
Filme[1].Laufzeit = 130;
Filme[1].IMDBWertung = 8.8;

Filme.Add(new Film());
Filme[2].FilmTitel = "Das Vermächtnis der Tempelritter";
Filme[2].Genre = "Abenteuer";
Filme[2].Erscheinungsjahr = 2004;
Filme[2].Laufzeit = 131;
Filme[2].IMDBWertung = 6.8;

// Usw.


In meiner ListBox werden mir jetzt Die jeweiligen Filmtitel aller Filme angezeigt.
Jetzt will ich halt nur die Filme in meiner ListBox aufgeführt haben, die zum Beispiel vom Genre "Action" sind.

PS. Ich habe noch nicht geschnallt, wie ich meinen Code hier vernünftig posten kann :P . Könntest du mir das bitte ebenfalls kurz erleutern?
Danke im vorraus

Moderiert von user profile iconTh69: C#-Tags hinzugefügt - dafür gibt es unter "Bereiche" den Eintrag "C#"
Ralf Jansen
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 4708
Erhaltene Danke: 991


VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
BeitragVerfasst: Do 18.08.11 12:22 
z.b. so

ausblenden C#-Quelltext
1:
2:
3:
4:
string meinGenre = "Action";

meineListBox.DisplayMember = "FilmTitel";
meineListBox.DataSource = Filme.Where(x => x.Genre == meinGenre);

Um Code zu markieren musst du ihn mit <span class="inlineSyntax">{PROTECTTAGf4802c0c72fab62184c466e3d43da20e}</span> umschließen. Oberhalb des Beitragseditors findest du auch unter Bereiche die entsprechende Auswahl. Denn '+'-Button.
LUCE Threadstarter
Hält's aus hier
Beiträge: 6



BeitragVerfasst: Do 18.08.11 13:29 
Das funktioniert leider noch nicht.

Beim debuggen bekomme ich an der Stelle:
FilmeListBox.DataSource = Filme.Where(x => x.Genre == GenreAction);

eine Fehlermeldung: Das komplexe DataBinding akzeptiert als Datenquelle entweder IList oder IListSource.

Verwende ich einfach nur: FilmeListBox.DataSource = Filme ist alles in Ordnung.


Muss ich x durch irgendetwas in meinem Code ersetzen, oder liegt es an einem anderen Problem?
Ralf Jansen
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 4708
Erhaltene Danke: 991


VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
BeitragVerfasst: Do 18.08.11 13:34 
Dann noch ein ToList() anhängen.
ausblenden C#-Quelltext
1:
FilmeListBox.DataSource = Filme.Where(x => x.Genre == GenreAction).ToList();					

Für diesen Beitrag haben gedankt: LUCE
LUCE Threadstarter
Hält's aus hier
Beiträge: 6



BeitragVerfasst: Do 18.08.11 13:50 
Super jetzt gehts ohne Probleme :gaehn: .
Vielen Dank!!!