Entwickler-Ecke

WinForms - listbox aus anderer Form an eine andere Form weiterleiten


Dragonclaw - Do 17.03.11 20:24
Titel: listbox aus anderer Form an eine andere Form weiterleiten
Sry für den kryptischen Titel, ist nen bisschen schwer kurz zubeschreiben was ich eigentlich will.

Also ich habe eine Funktion in der statischen Klasse Cardbase die anhand eines Strings entscheidet welche Daten in eine Listbox geladen werden

Quelltext
1:
CardBase.AddCustomToListBox(Listbox listbox, String customSets)                    

Die Listbox in die eingefügt werden soll befindet sich allerdings in einem Fenster welches vom Hauptfenster geöffnet wird und zwar so:

Quelltext
1:
2:
CardLibrary cardLibrary = new CardLibrary();
cardLibrary.Show();

in CardLibrary wird dann eine weiteres Fenster geöffnet

Quelltext
1:
2:
Config.customOpen = true;
CustomSets customSets = new CustomSets();

von dort aus wird dann die Funktion AddCustomToListBox aufgerufen

Quelltext
1:
2:
CardLibrary cardLibrary = CardLibrary.ActiveForm as CardLibrary;
CardBase.AddCustomToListBox(cardLibrary.lbCardLib, "Eventide");

Der Debuggen meckert nicht, allerdings wenn der Code tatsächlich ausgeführt wird.

NullReferenceException wurde nicht behandelt.
Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt.

Wo liegt da genau der Fehler?


Trashkid2000 - Do 17.03.11 21:31

Hallo,
user profile iconDragonclaw hat folgendes geschrieben Zum zitierten Posting springen:
Also ich habe eine Funktion in der statischen Klasse Cardbase die anhand eines Strings entscheidet welche Daten in eine Listbox geladen werden...
Weniger Typsierung als mit einem String geht nicht! Das ist wirklich nicht die beste Methode. Aber gut.

Ich denke, dass es an der Stelle scheitert:

C#-Quelltext
1:
2:
CardLibrary cardLibrary = CardLibrary.ActiveForm as CardLibrary;
CardBase.AddCustomToListBox(cardLibrary.lbCardLib, "Eventide");
Denn lass mal eine andere Form aktiv sein... Wenn Du ein as verwendest, dann solltest Du danach auch auf null prüfen.
Soviel erstmal, Marko


Dragonclaw - Do 17.03.11 21:51

user profile iconTrashkid2000 hat folgendes geschrieben Zum zitierten Posting springen:
Hallo,
user profile iconDragonclaw hat folgendes geschrieben Zum zitierten Posting springen:
Also ich habe eine Funktion in der statischen Klasse Cardbase die anhand eines Strings entscheidet welche Daten in eine Listbox geladen werden...
Weniger Typsierung als mit einem String geht nicht! Das ist wirklich nicht die beste Methode. Aber gut.


Ich baue mir auch alle makieren Einträgen einer CheckedListBox nen String zusammen und gebe den weiter, falls dir was besseres einfällt wäre ich für Ratschläge dankbar.

user profile iconTrashkid2000 hat folgendes geschrieben Zum zitierten Posting springen:

Ich denke, dass es an der Stelle scheitert:

C#-Quelltext
1:
2:
CardLibrary cardLibrary = CardLibrary.ActiveForm as CardLibrary;
CardBase.AddCustomToListBox(cardLibrary.lbCardLib, "Eventide");
Denn lass mal eine andere Form aktiv sein... Wenn Du ein as verwendest, dann solltest Du danach auch auf null prüfen.
Soviel erstmal, Marko


Du hast Recht, cardLibrary ist null. Was ist nicht verstehe ist warum das so ist. Muss ich erst die Form CardLibrary wieder als Focus setzen? Falls ja wie mache ich das?


Dragonclaw - Do 17.03.11 23:43

Okay ich hab das jetzt folgender Weise gelöst:

Der Construktor von customSets nimmt jetzt ne ListBox mit auf, dann hab ich ne lokale referenze zu ner Listbox und kann die einfach an die Funktion weiter reichen.

Ich würde aber trotzdem ganz gerne verstehen warum das oben nicht geklappt hat.