Frage von jundo324, 112

Csharp es ist ein Objektverweis erforderlich, wie erstelle ich einen?

Das (auf den Bildern) ist mein Code, jetzt kommt aber diese Fehlermeldung (Bild2) weis jemand wie ich den Fehler beheben kann?

Antwort
von GustavAT, 58

Die Antwort ist einfach: Du kannst nicht in einer statischen Methode (Bei dir GetAllFiles) auf ein nicht-statisches Feld (listBox1) zugreifen. Enweder übergibst du listBox1 beim Aufruf deiner statischen Methode oder du lässt dir von GetAllFiles nur eine Liste mit Pfaden zurückgeben und füllst nach dem Aufruf deine Listbox (vorrausgesetzt die Methode, welche GetAllFiles aufruft nicht-statisch ist)

Ich vermute auch mal start, dass du WPF verwendest. Da brauchst du nicht jeden einzelnen String mit Add hinzufügen, sondern einfach die ItemsSource-Property der ListBox setzen.

Antwort
von Omnivore08, 61

Dein Objekt "listbox" ist Klassenintern! Du versuchst aber über eine statische Funktion auf eine klasseninterne Variable zuzugreifen. Das geht nicht. Woher soll die statische Funktion wissen WELCHE Instanz du meinst?

Antwort
von drdrakken, 77

Die Bilder sind sehr klein, man kann leider überhaupt nichts erkennen.

Antwort
von drdrakken, 65

Offenbar ist die Listbox null. Warum auch immer. Das läßt sich aus dem Stückchen Code leider nicht erkennen. lG - DD

Kommentar von jundo324 ,
Kommentar von drdrakken ,

Das nützt auch nicht viel da man nicht sieht wo die Listbox definiert ist.

Kommentar von jundo324 ,
 <ListBox x:Name="listBox1" HorizontalAlignment="Left" Height="160" VerticalAlignment="Top" Width="686" Margin="0,104,-326,-164" SelectionChanged="listBox1_SelectionChanged" />
meinst du das mit definition?
Kommentar von GustavAT ,

Die ListBox ist im Markup definiert

Kommentar von Omnivore08 ,

doch das sieht man. Man kann es jedenfalls herleiten, da in der Methode "suchenachliedern" auch auf listbox verwiesen wird. Und da zeigt er kein Fehler an. ListBox ist (wie üblich bei klickibunti) als ganz normale Instanz innerhalb der Klasseninstanz deklariert.

Jedoch versucht er in der STATISCHEN Methode "getallfiles" auf ein Objekt der Klasseninstanz zuzugreifen. Und das geht NIE! Statische Methoden können auch nur auf statische Objekte zugreifen ODER man verweist explitzit auf die Listbox. Dazu muss man aber natürlich sagen um welche Instanz es sich handelt.

GetAllFiles darf nicht statisch sein!

Keine passende Antwort gefunden?

Fragen Sie die Community