Autor Beitrag
hanspeter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 44

Windows

BeitragVerfasst: So 10.12.06 10:07 
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
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1013



BeitragVerfasst: So 10.12.06 12:01 
Also ich persönlich hab das Problem noch nicht verstanden...

user profile iconhanspeter 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...

user profile iconhanspeter 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?

user profile iconhanspeter 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 44

Windows

BeitragVerfasst: So 10.12.06 12:46 
Also nochmal.
Ich will die Items einer Listbox füllen.

Aufruf:

ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
 Class1 Klasse = new Class1();  // Hier wird die Klasse definiert

        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            Klasse.InitListbox(listBox1.Items);  // Aufruf

        }



Die Klasse selbst:

ausblenden 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 user profile iconChristian S.: C#-Tags hinzugefügt
Christian S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: So 10.12.06 13:03 
user profile iconhanspeter 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 ;-)

user profile iconhanspeter 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. :-)

user profile iconhanspeter hat folgendes geschrieben:
ObjectCollection List oder IList List bringen Fehler
Welchen Fehler?



user profile iconhanspeter hat folgendes geschrieben:
ausblenden 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?

user profile iconhanspeter 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".

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
hanspeter Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 44

Windows

BeitragVerfasst: 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:

ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 3803
Erhaltene Danke: 176

Arch Linux
Python, C, C++ (vim)
BeitragVerfasst: Mo 11.12.06 14:39 
Titel: Re: Die Lösung
user profile iconhanspeter 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.