【问题标题】:Sending Values to a label causes the program to loop and causes a stack overflow error向标签发送值会导致程序循环并导致堆栈溢出错误
【发布时间】:2013-03-15 22:19:00
【问题描述】:

这让我彻底疯了!我正在尝试计算值并将这些值返回到我的程序中的标签。它很长,这里只是一个例子。当我去编译它时,它每次循环一次 "label18.Text = String.Format(l.ToString("F1"));"或类似的运行。例如,该程序将按顺序运行,直到它到达标签 18,然后它返回再次声明 h,w,l 并将每个用户输入转换为 double 以进行计算。随着我的程序大小增加,这些循环加起来并最终导致堆栈溢出。请帮帮我!标签中是否存在导致此问题的某些设置?

        private void calculateModes_Click(object sender, EventArgs e)
    {
        //Declare, Convert, and Display variables

        double h,w,l;

        h = Convert.ToDouble(height.Text.ToString()); //(height);
        w = Convert.ToDouble(width.Text.ToString()); //width
        l = Convert.ToDouble(length.Text.ToString()); //length

        label18.Text = String.Format(l.ToString("F1"));
        label19.Text = String.Format(w.ToString("F1"));
        label21.Text = String.Format(h.ToString("F1"));}

【问题讨论】:

  • 编译不会导致stackoverflow,也许你的意思是运行它。但是什么时候发生呢?点击按钮?因为该代码看起来无害。
  • 它发生在按钮点击
  • @LewsTherin 你是对的,代码看起来确实无害。我想知道在标签更改期间是否触发了任何事件侦听器?
  • 是的,我的意思是运行它。我以前只使用命令行编码,所以这种形式就像一种不同的语言,有点令人困惑。直到我一步一步地完成程序,我才知道发生了什么。我将“Text Changed”的标签属性设置为“calculateModes_Click”,以便单击按钮时标签的文本会发生变化。这会导致循环吗?否则标签的文本没有改变
  • 长度(高度/宽度)变量从何而来?也许是来自 label18 的文本?在该标签的 TextChanged 上,您调用的是 calculateModes_Click?

标签: c# winforms loops button label


【解决方案1】:

作为一个选项:尝试检查label 18 的属性/事件,看看是否有TextChange 事件处理程序设置为calculateModes_Click

【讨论】:

  • 是的,TextChange 选项下有一个事件处理程序设置为 calculateModes_Click
  • 那么,我应该怎么做呢?
  • @SarahK,删除它。双击删除。
  • @Dmytro 是按钮还是 textchange 选项?
  • @SarahK,文本更改选项
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-02-08
  • 2021-07-07
  • 1970-01-01
  • 1970-01-01
  • 2012-10-06
  • 2015-05-21
  • 2014-02-14
相关资源
最近更新 更多