Hallo,
folgender Code gibt mir eine "Stack Overflow Exception" und ich weiß nicht warum.
if (mnuEKPreiseZeigen.Checked == true)
{
mnuEKPreiseZeigen.Checked = false;
}
else
mnuEKPreiseZeigen.Checked = true;
die Exception hat folgenden Wortlaut:
Der Ausdruck kann nicht ausgewertet werden, weil sich der aktuelle Thread in einem Stapelüberlaufzustand befindet.
eine Innerexeption wird leider nicht angezeigt.
Hallo,
danke für die Antwort.
Was man manchmal für einen Mist programmiert,der Code macht absolut keinen Sinn. 🙄
By the way:
if (mnuEKPreiseZeigen.Checked == true)
{
mnuEKPreiseZeigen.Checked = false;
}
else
mnuEKPreiseZeigen.Checked = true;
ist in meinen Augen kein guter Code.
mnuEKPreiseZeigen.Checked = mnuEKPreiseZeigen.Checked ? false : true;
umgestalten, ist imho eleganter.
be the hammer, not the nail!
Bzw. einfach
mnuEKPreiseZeigen.Checked = !mnuEKPreiseZeigen.Checked
schreiben 😉
Zu dem == false/true siehe auch [Tipp] Anfängerfehler == true / == false
Baka wa shinanakya naoranai.
Mein XING Profil.
Hallo xrc7581,
hat sich dein Problem inzwischen gelöst oder besteht das Problem immer noch? Was ist _mnuEKPreiseZeigen _ein "normales" WinForms/WPF-Control oder hast du es selber programmiert? Vielleicht liegt es daran, dass - wenn du das Control selbst programmiert hast - in _Checked _irgendwas passiert, wodurch die StackOverflowException geworfen wird. Ansonsten schau mal im StackTrace nach.
Abgesehen von deinem Problem, ist es einfacher, wenn du folgendes schreibst:
myCheckBox.Checked = !myCheckBox.Checked;
Ansonsten ist es doppelt gemoppelt.
zero_x
zero_x | <span style="font-size: 10;">my</span><span style="font-size: 10;">CSharp</span><span style="font-size: 10;">.de</span> - gemeinsam mehr erreichen
Für längere Zeit inaktiv.
Hallo,
ich habe jetzt die Variante benutzt.
Problem ist gelöst.
myCheckBox.Checked = !myCheckBox.Checked;
mnuEKPreisAnzeigen ist ein ToolStripMenuItem.
Was mir beim Debuggen aufgefallen ist,daß das Event CheckChanged mehrfach aufgerufen wird und damit in eine Endlosschleife geht.
Bzw. einfach
mnuEKPreiseZeigen.Checked = !mnuEKPreiseZeigen.Checked
schreiben 😉
Das stimmt natuerlich, Negation ist nur nicht jedermanns Ding 😉
be the hammer, not the nail!
Hallo xrc7581,
wenn du innerhalb des CheckedChanged-Events wieder den Checked-Status ändern willst, dann schau mal in [FAQ] Event nur bei Benutzeraktion auslösen, nicht bei programmtechnischer Änderung (um die Endlos-Rekursion zu vermeiden).