Entwickler-Ecke
C# - Die Sprache - ObjectCollection
hanspeter - So 10.12.06 10:07
Titel: ObjectCollection
Hallo,
im Moment stehe ich etwas auf dem Schlauch.
Denke halt zuviel noch in Delphi.
Ich möchte die Items einer Listbox in einer Class füllen.
In der Klasse wird eine Stringliste generiert.
Also der Aufruf
MyClass(Listbox1.Items);
Items ist ja eine ObjectCollection.
Irgendwie bekomme ich in der Klassenmethode den Parameter nicht hin.
ObjectCollection List oder IList List bringen Fehler.
Kann mir wer einen Tip geben, wie der Parameter in der Klassenmethode korrekt aussieht?
Vielen Dank
Peter
JayK - So 10.12.06 12:01
Also ich persönlich hab das Problem noch nicht verstanden...
hanspeter hat folgendes geschrieben: |
Ich möchte die Items einer Listbox in einer Class füllen.
In der Klasse wird eine Stringliste generiert. |
Du hast eine Klasse und da ist eine ListBox drin...
hanspeter hat folgendes geschrieben: |
Also der Aufruf
MyClass(Listbox1.Items);
Items ist ja eine ObjectCollection. |
Und die Listbox in der Klasse möchtest du zu Anfang mit dem Inhalt dieser bereits vorher vorhandenen Listbox1 füllen?
Wozu würde dann in der Klasse selbst noch eine Stringliste generiert?
hanspeter hat folgendes geschrieben: |
Irgendwie bekomme ich in der Klassenmethode den Parameter nicht hin.
ObjectCollection List oder IList List bringen Fehler.
Kann mir wer einen Tip geben, wie der Parameter in der Klassenmethode korrekt aussieht? |
Tipp: gucken, was für einen Typ du genau brauchst im Konstruktor und dann als Parameter auch diesen Typ verlangen. ;)
Ich glaube aber, soweit warst du auch schon.
Hab schon ne Weile nich mehr mit der Listbox gearbeitet, hoffe dass ich trotzdem keinen Müll erzähle.
Wie heißt eigentlich die Fehlermeldung?
hanspeter - So 10.12.06 12:46
Also nochmal.
Ich will die Items einer Listbox füllen.
Aufruf:
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12:
| Class1 Klasse = new Class1(); public Form1() { InitializeComponent(); }
private void button1_Click(object sender, EventArgs e) { Klasse.InitListbox(listBox1.Items); } |
Die Klasse selbst:
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17:
| class Class1 { public DirectoryInfo ds; public Class1() { DirectoryInfo ds = new DirectoryInfo("D:\\Bild\\Eigene"); FileSystemInfo[] infos = ds.GetFileSystemInfos();
} public void InitListbox(ObjectCollection Liste) { Liste.Clear; foreach (FileSystemInfo i in Infos) { Liste.Add(i); } } } |
Ich suche für Liste den gültigen Parametertyp.
Da ObjectCollection generisch ist, habe ich damit ein Problem.
Gruß
Peter
Moderiert von
Christian S.: C#-Tags hinzugefügt
Christian S. - So 10.12.06 13:03
Titel: Re: ObjectCollection
hanspeter hat folgendes geschrieben: |
In der Klasse wird eine Stringliste generiert. |
In der Klasse weiter unten hast Du aber keine Stringliste :gruebel: In die Listbox von .NET bist Du aber auch nicht auf Strings festgelegt ;-)
hanspeter hat folgendes geschrieben: |
Irgendwie bekomme ich in der Klassenmethode den Parameter nicht hin. |
Ich glaube, Du meinst in der "Methode der Klasse", eine Klassenmethode ist was anderes. :-)
hanspeter hat folgendes geschrieben: |
ObjectCollection List oder IList List bringen Fehler |
Welchen Fehler?
hanspeter hat folgendes geschrieben: |
C#-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17:
| class Class1 { public DirectoryInfo ds; public Class1() { DirectoryInfo ds = new DirectoryInfo("D:\\Bild\\Eigene"); FileSystemInfo[] infos = ds.GetFileSystemInfos();
} public void InitListbox(ObjectCollection Liste) { Liste.Clear; foreach (FileSystemInfo i in Infos) { Liste.Add(i); } } } | |
In InitListBox ist "Infos" doch gar nicht mehr definiert. Im Konstruktor deklarierst Du "ds" neu, da wird das "ds" der Klasse wahrscheinlich gar nicht benutzt (müsste das nicht sogar einen Fehler geben?). Nicht zum Problem gehörend: Muss "ds" wirklich public sein?
hanspeter hat folgendes geschrieben: |
Da ObjectCollection generisch ist, habe ich damit ein Problem. |
Nein, sie ist nicht generishc. Allerdings hört sie auf den Namen "ListBox.ObjectCollection".
hanspeter - So 10.12.06 18:44
Titel: Die Lösung
Also hier ist die Lösung. Die Fehlermeldung von VS2005 war etwas verwirrend.
ObjectCollection ist nicht definiert. Fehlt ein Using...
Hier muss eine komplette Declaration des Zugriffsweges erfolgen.
Also
(System.Windows.Forms.ListBox.ObjectCollection Liste)
Hier der funktionierende Code:
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17:
| class Class1 { DirectoryInfo ds = new DirectoryInfo("D:\\Bild\\Eigene Pferde"); public Class1() { } public void InitListbox(System.Windows.Forms.ListBox.ObjectCollection Liste) { FileSystemInfo[] infos = ds.GetFileSystemInfos(); Liste.Clear(); foreach (FileSystemInfo i in infos) { Liste.Add(i.Name); } } } |
Vielen Dank für die wertvollen Hinweise.
Mit Gruß
Peter
Kha - Mo 11.12.06 14:39
Titel: Re: Die Lösung
hanspeter hat folgendes geschrieben: |
Hier muss eine komplette Declaration des Zugriffsweges erfolgen. |
Nein, muss sie nicht, wie Christian schon schrob.
PS: Als Parametertyp solltest du eher einfach IList benutzen.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!