C#形成未知的StackOverflowException

本文关键字:StackOverflowException 未知 | 更新日期: 2023-09-27 18:27:22

我在代码的最后一行得到了最奇怪的堆栈溢出异常:

inputPrice是一个数字UpDown

private void inputPreis_ValueChanged(object sender, EventArgs e)
    {
        if (checkBoxUnlock.Checked == false)
        {
            if (oldInputPreisValue == 0)
            {
                inputPreis.Value = 5;
            }
            else if (oldInputPreisValue == 5)
            {
                if (inputPreis.Value > oldInputPreisValue)
                    inputPreis.Value = 8;
                else if (inputPreis.Value < oldInputPreisValue)
                    inputPreis.Value = 5;
            }
            else if (oldInputPreisValue == 8)
            {
                if (inputPreis.Value > oldInputPreisValue)
                    inputPreis.Value = 10;
                else if (inputPreis.Value < oldInputPreisValue)
                    inputPreis.Value = 5;
            }
            //etc...
        }
        oldInputPreisValue = Convert.ToInt32(inputPreis.Value);
    }

该脚本应该允许用户将numericUpDown(inputPrice)的值更改为固定值。通过选中checkBoxUnlock复选框,用户可以自由设置值。

这是怎么回事?

C#形成未知的StackOverflowException

我假设当您执行以下操作时:

inputPreis.Value = 5;

然后,这将调用inputPreis_ValueChanged事件,该事件将再次设置值,然后一次又一次地调用该事件,直到到达堆栈溢出异常。

我建议将值存储在本地属性中并进行设置,而不是重置控件中的值。

相关文章:
  • 没有找到相关文章