Laden...

listBox1 == null == !?!

Erstellt von axed10 vor 15 Jahren Letzter Beitrag vor 15 Jahren 2.520 Views
A
axed10 Themenstarter:in
11 Beiträge seit 2009
vor 15 Jahren
listBox1 == null == !?!

Hallo zusammen,
Ich verstehe nicht ganz warum bei einem Versuch, listBox1.Items.Add(string); eine NullReferenceException ausgelöst wird!?

mfg alex

🙂

3.430 Beiträge seit 2007
vor 15 Jahren

Hallo axed10,

ja dann wird die ListBox wohl null sein (mit null initialisiert).
Gehe einfach durch den Code und suche warum listBox1 = null ist.

Siehe: [FAQ] NullReferenceException: Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt

Gruss
Michael

T
177 Beiträge seit 2007
vor 15 Jahren

Hallo Alex,

Erst einmal solltest du in den Regeln nachlesen wie man Threads erstellt damit auch gut geholfen werden kann.

Nun aber zu deinem Problem.

listBox1 ist richtig instanziert?
Also mit:

ListBox listBox1 = new ListBox();

ist "string" eine variable oder willst du einfach den Typ übergeben was ziemlich strange wäre?

Mit freundlichen Grüssen,
Tobi

A
axed10 Themenstarter:in
11 Beiträge seit 2009
vor 15 Jahren

listBox1 habe ich mit dem Designer erstellt - liegt es also daran? Ich fände es wohl etwas seltsam eine (eigentlich) bereits instanzierte eine neue Instanz zuzuweisen?
string ist natürlich eine Variable 😉
EDIT:
Aus Form1.Designer.cs:

private System.Windows.Forms.ListBox listBox1;

🙂

J
3.331 Beiträge seit 2006
vor 15 Jahren

Dein Code ist natürlich nicht der entscheidende. Wichtig ist, ob der von TmikeB genannte Abschnitt enthalten ist und nicht (aus welchen Gründen auch immer) fehlt. Jürgen

239 Beiträge seit 2008
vor 15 Jahren

Außerdem ist das eigentlich ein ganz klassischer Fehler, dessen hauptsächliche Quelle durchs Debuggen herausgefunden werden kann. Entweder ist listbox1 null oder deine Variable, die du hinzufügen willst.

Neulich im Computerkurs:
Mein Computer kennt Else nicht! 😁


[URL]XING-Profil[/URL]

A
axed10 Themenstarter:in
11 Beiträge seit 2009
vor 15 Jahren

Sollte ListBox listBox1 = new ListBox(); nicht im Code vom Designer stehen?
Oder muss ich das wirklich erst neu instanzieren? Was ich allerdings bezweifle - weil ich das sonst auch nie neu instanzieren musste?

Wenn ich listBox1 jedoch neu instanziere, bekomme ich zwar keine Fehlermeldung - es werden dann aber auch keine Items hinzugefügt.

🙂

Gelöschter Account
vor 15 Jahren

wie bereits mehrfach erwähnt und auch im faq-link beschreiben solltest du debuggen um die quelle dieses fehlers zu finden. alles andere ist vergleichbar mit lottozahlvorhersage.

T
177 Beiträge seit 2007
vor 15 Jahren

Hallo Alex,

wie vorher schon gefragt, wollte ich wissen was "string" ist?

Ist es eine Variable was komisch wäre da string ein reserved name is da es ja ein typ ist...

Mit freundlichen Grüssen,
Tobias

5.658 Beiträge seit 2006
vor 15 Jahren

Sollte ListBox listBox1 = new ListBox(); nicht im Code vom Designer stehen?

Ja, und zwar in der Methode InitializeComponents(). Die sollte dann im Form-Konstruktor aufgerufen werden.

wie vorher schon gefragt, wollte ich wissen was "string" ist?

Ist doch oben schon gesagt worden.

Christian

Weeks of programming can save you hours of planning

A
axed10 Themenstarter:in
11 Beiträge seit 2009
vor 15 Jahren

Die Lottozahlen-ziehen(); Methode klingt mir sehr sympatisch - Sie vermag mir mehr Informationen zu pumpen als wie infos, die Leute posten und ich ohnehin durchs Debuggen bekommen habe!

ich habs einfach mal ganz unkompliziert gemacht, da ich ratlos war, und habe es wie folgt getippt:

🙂

Gelöschter Account
vor 15 Jahren

zeig mal deinen konstruktor

T
109 Beiträge seit 2008
vor 15 Jahren

Die Lottozahlen-ziehen(); Methode klingt mir sehr sympatisch - Sie vermag mir mehr Informationen zu pumpen als wie infos, die Leute posten und ich ohnehin durchs Debuggen bekommen habe!

?(
Entwerder ich versteh dich nicht oder die vertippst dich gewaltig.

Versuchs mal mit "Überwachen" dann siehst du beim debuggen ob sich die variable geändert hat. dann kommst du zu der stelle wo der fehler zum leben erweckt wird.

des ist oben bei debuggen-> fenster -> Überwachen (wenn das programm läuft)

Torley

U
1.688 Beiträge seit 2007
vor 15 Jahren

Die Lottozahlen-ziehen(); Methode klingt mir sehr sympatisch - Sie vermag mir mehr Informationen zu pumpen als wie infos, die Leute posten und ich ohnehin durchs Debuggen bekommen habe!
?(
Entwerder ich versteh dich nicht oder die vertippst dich gewaltig.

Ich dachte erst, ich hab' mich verlesen. Ich finde auch, dass das eine sehr rücksichtslose und zudem sinnfreie Einstellung ist.

Die Information, die Du "ohnehin durchs Debuggen bekommen" hast, ist doch eindeutig. Du zeigst selbst, das list1 null ist. Wonach fragst Du dann?

A
axed10 Themenstarter:in
11 Beiträge seit 2009
vor 15 Jahren

Bitte entschuldigt wenn ich mich hitzig ausgedrückt habe.

Du zeigst selbst, das list1 null ist. Wonach fragst Du dann?

Meine Frage ist, nach wie vor, wie es sein kann, dass listBox1 Null ist?

Die Zeile mit listBox1.Items.add("hi"); ist das einzige Mal, wo ich die listBox1 mit selbstgeschriebenen Code berühre. Neu instanzieren ist auch nicht das Gewollte, da es ja bereits (durch den designer) eine aktuelle Instanz gibt.

Entschuldige, welchen Konstruktor?

🙂

Gelöschter Account
vor 15 Jahren

den konstruktor der form.

1.130 Beiträge seit 2007
vor 15 Jahren

Ist es schon wieder die "Ich hab InitializeComponent(); gelöscht"-Jahreszeit?

Projekte:Jade, HttpSaver
Zum Rechtschreiben gibts doch schon die Politiker. Aber die bauen auch nur mist!

A
axed10 Themenstarter:in
11 Beiträge seit 2009
vor 15 Jahren

Bitte - Im Anhang

Edit:

Ist es schon wieder die "Ich hab InitializeComponent(); gelöscht"-Jahreszeit?

Nein 😉

🙂

1.130 Beiträge seit 2007
vor 15 Jahren

Mhh ned vergessen, sondern nur zu spät aufgerufen.



        public QSharpDDE_SettingsForm()
        {
            GetModsFromModlistIntomodlistbox();//Diese Zeile
            InitializeComponent(); //mit dieser vertauschen
            //Programmstart           
        }

Projekte:Jade, HttpSaver
Zum Rechtschreiben gibts doch schon die Politiker. Aber die bauen auch nur mist!

A
axed10 Themenstarter:in
11 Beiträge seit 2009
vor 15 Jahren

DEEEAAAAMM 😄

Vielen Dank! - Ich wäre da nicht so schnell drauf gekommen(gib mir min 3 Monate ^^)
*anbet'*

🙂

49.485 Beiträge seit 2005
vor 15 Jahren

Hallo axed10,

das Debuggen hätte dir doch leicht die Lösung gebracht: Breakpoint auf die Initialisierung, Breakpoint auf das Items.Add und schon hättest du gesehen, dass das andere vor dem einen aufgerufen wird.

Es gibt doch sowieso nur zwei Möglichkeiten: Entweder ist die Initialisierung noch nicht erfolgt oder sie ist erfolgt, aber der Wert wieder mit null überschrieben worden. Das hättest du so oder so leicht selbst herausfinden können. Daher auch die verschiedenen Hinweis auf das Debuggen, die du hättest ernstnehmen sollen statt sie abzutun und deshalb einen so langen und gleichzeitig so unnötigen Thread zu produzieren.

herbivore