Windows窗体无限循环异常

时间:2016-05-13 09:32:28

标签: windows forms loops infinite eventhandler

我很快创建了一个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被激活。那是无限循环: - (

我如何更改上面的代码构造以避免这种情况?

感谢。

2 个答案:

答案 0 :(得分:0)

你不应该使用和调用“initializeValues();” (无限循环的原因)。

第一个解决方案可能是将TextBox的init值放在InitializeComponent中:

  

MyTextBox.Text = myInitValue;

答案 1 :(得分:0)

我通过将事件更改为" KeyPress"解决了这个问题。在这种情况下,方法本身不会激活事件。没有更多的无限循环。设置断点和逐步帮助我理解"流程"。谢谢CodeCaster。