L
physikus schrieb:
Nun möchte ich immer noch mit einer Methode eine Text/Listbox beschreiben. Diese Methode soll statisch sein, da unabhängig von den Objekten immer das gleiche passieren soll.
public static void meineMethode(string text)
{
listBox1.DataSource = null;
listBox1.DataSource = items;
}
Jetzt bekomme ich wieder meine Fehlermeldung
Für das nicht statische Feld, die Methode oder die Eigenschaft "WindowsFormsApplication1.Form1.print(string)" ist ein Objektverweis erforderlich.
weil die Listbox nicht statisch ist.
Du hast static immernoch nicht verstanden:
Es geht nicht darum, dass immer dasselbe passieren soll (das kann natürlich auch für nicht-statische Methoden gelten) oder der Code einmalig ist (Code ist immer einmalig), sondern darum, dass es bei statischen Methoden kein Objekt der dazugehörigen Klasse geben muss.
Die Klasse ist jetzt eine Beschreibung von etwas, was erzeugt werden soll (ein Fenster). In dem Moment, wo Du ein Objekt erzeugst, hast Du ein Fenster, mit einer Listbox, einem Button usw. Wenn Du ein zweites Objekt erzeugst, hast Du ein weiteres Fenster, mit einer weiteren ListBox etc. Diese Listboxen sind Deine Instanzvariablen. Wenn diese static wären gäbe es nur eine Listbox, und die würde zu keinem Fenster gehören.
Anders herum: In deiner static-Methode gibt es keine ListBox, weil die ListBox zu einem Objekt gehört. Static Methoden gehören aber zu keinem Objekt.
Wenn Du einen Ereignishandler für ein Fenster mit einem Objekt, welches das Fenster repräsentiert, anlegen willst, darf der schlicht und ergreifend selbst nicht static sein, weil der Ereignishandler und das Fensterobjekt, auf dem das Ereignis stattfindet, zusammengehören.