Исключение бесконечного цикла Windows Forms

Я быстро сделал проект Windows Forms, который загружает графический интерфейс различных текстовых полей с плавающими значениями. Некоторые из них уже имеют инициализированное значение. Все текстовые поля должны быть обновлены после изменения одного из них.

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();
}

Проблема: Когда я выполняю этот проект, он генерирует исключение StackruException, которое не обрабатывается (бесконечный цикл или бесконечная рекурсия). Я думаю, это потому, что во время calculateValues() Метод текст textBoxes будет изменен, а затем активируются обработчики событий. Это бесконечный цикл:-(

Как мне изменить мой код, описанный выше, чтобы избежать этого?

Благодарю.

2 ответа

Вы не должны использовать и вызывать "initializeValues ​​();" (причина бесконечного цикла).

Первым решением может быть помещение значения инициализации TextBox в InitializeComponent:

MyTextBox.Text = myInitValue;

Я решил проблему, изменив событие на "KeyPress". В этом случае событие не активируется самим методом. Больше нет бесконечных петель. Установка точек останова и пошаговое выполнение помогли мне понять "поток". Спасибо CodeCaster.

Другие вопросы по тегам