Ich machte schnell ein Windows Forms-Projekt, das eine GUI aus verschiedenen Textfeldern mit Float-Werten lädt. Einige von ihnen haben bereits einen Wert initialisiert. Alle Textfelder müssen aktualisiert werden, nachdem eine von ihnen geändert wurde.Windows Forms Endlosschleife Ausnahme
public Form1()
{
InitializeComponent();
initializeValues();
calculateValues();
}
public void initializeValues()
{
//textboxes are filled/initialized with default float values
}
public void calculateValues()
{
//here all textboxes are new calculated and updated
}
private void textBox1_TextChanged(object sender, EventArgs e)
{
calculateValues();
}
private void textBox2_TextChanged(object sender, EventArgs e)
{
calculateValues();
}
Problem: Als ich dieses Projekt durchführen, ist es mir eine Stackoverflow wirft die (Endlosschleife oder unendliche Rekursion) unhandeled ist. Ich denke es ist, weil während der calculateValues()
Methode der Text der textBoxes geändert wird und dann die Eventhandler aktiviert werden. Das ist die unendliche Schleife :-(
Wie ich meinen Code Konstrukt oben zu ändern, um dies zu vermeiden
Dank
Setzen Sie Haltepunkte, gehen Sie durch Ihren Code und Sie werden feststellen, dass Ihr Verdacht richtig ist. Einfach die Veranstaltung vorher abbestellen und nach der Änderung erneut abonnieren. – CodeCaster
Setzen Sie Ihre IDE so, dass sie bricht, wenn eine Win32-Ausnahme ausgelöst wird. Sie werden den gesamten Callstack direkt vor sich haben und sofort verraten, warum Sie eine Endlosschleife/unendliche Rekursion haben. – IInspectable