我很快创建了一个Windows窗体项目,该项目使用浮点值加载不同文本框的GUI。其中一些确实已经初始化了一个值。其中一个文本框更改后,必须更新所有文本框。
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();
}
问题:
当我执行这个项目时,它会抛出一个无法循环的StackOverflowException(无限循环或无限递归)。我认为这是因为在calculateValues()
方法期间,textBoxes的文本将被更改,然后Eventhandler被激活。那是无限循环: - (
我如何更改上面的代码构造以避免这种情况?
感谢。
答案 0 :(得分:0)
你不应该使用和调用“initializeValues();” (无限循环的原因)。
第一个解决方案可能是将TextBox的init值放在InitializeComponent中:
MyTextBox.Text = myInitValue;
答案 1 :(得分:0)
我通过将事件更改为" KeyPress"解决了这个问题。在这种情况下,方法本身不会激活事件。没有更多的无限循环。设置断点和逐步帮助我理解"流程"。谢谢CodeCaster。