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复选框,用户可以自由设置值。
这是怎么回事?
我假设当您执行以下操作时:
inputPreis.Value = 5;
然后,这将调用inputPreis_ValueChanged事件,该事件将再次设置值,然后一次又一次地调用该事件,直到到达堆栈溢出异常。
我建议将值存储在本地属性中并进行设置,而不是重置控件中的值。