C# 按钮。单击事件如何使其显示十进制f

C# 按钮。单击事件如何使其显示十进制f,c#,C#,所以我希望按钮3计算“f”并在label21中显示它,但它没有 似乎有效 private void button3_Click(object sender, EventArgs e) { button3.Click += new EventHandler(this.button3_Click); decimal b, f = 1; b = numericUpDown6.Value; while (f > 1)

所以我希望按钮3计算“f”并在label21中显示它,但它没有 似乎有效

private void button3_Click(object sender, EventArgs e)
    {
        button3.Click += new EventHandler(this.button3_Click);
        decimal b, f = 1;
        b = numericUpDown6.Value;
        while (f > 1)
        {
            f *= b--;

            label21.Text = f.ToString();
        }

while循环正在检查(f>1)&您初始化f=1,因此它永远不会进入while循环

您需要检查(b>1)

此外,在for循环内分配标签也没有意义,因为GUI更新只会在方法退出后发生

private void button3_Click(object sender, EventArgs e)
{
    decimal b, f = 1;
    b = numericUpDown6.Value;
    while (b > 1)
    {
        f *= b--;
    }
    label21.Text = f.ToString();
}

期望的行为是什么?你得到了什么?我希望它计算阶乘并显示在标签中,我什么也没有得到,标签仍然显示它在项目开始时设置的值,你的代码有什么错误?它什么也没有做这就是问题所在,也许我做错了什么你的标签上的值错了吗?你的标签没有任何价值吗?等等,它起作用了!谢谢,但现在还有另一个问题,当我尝试输入大于2的值时,它给了我这样一个“System.Windows.Forms.dll中发生了类型为'System.StackOverflowException'的未处理异常”我没有注意到您每次单击按钮时都在添加新的事件处理程序-这不是必需的。删除该行。你应该将答案标记为正确,以帮助其他有类似问题的人。当然,我忘了:)