【发布时间】: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