You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C# WinForm表单输入答案错误时如何保持label标签值持续显示

问题根因
  • 逻辑判断完全倒置:现有代码中if (guess != label1.Text)分支弹出「猜对」提示,和实际需求完全相反。
  • 存在阻塞UI的死循环:点击事件中的while循环无任何退出条件,进入循环后既不会更新guess变量的值,也不会修改label1.Text的内容,会持续弹出消息框阻塞UI线程,导致窗体无法正常重绘,所以出现Label内容消失、不显示原有单词的问题。
修正代码

你可以直接替换button1_Click的逻辑即可:

private void button1_Click(object sender, EventArgs e)
{
    string guess = textBox1.Text;
    // 直接判断即可,不需要循环,每次点击按钮都会重新获取输入内容
    if (guess == label1.Text)
    {
        MessageBox.Show("You got it right");
        // 如果猜对后要刷新下一个单词可以取消注释下面这句
        // label1.Text = word[rnd.Next(0, word.Length)];
        // 猜对后清空输入框
        textBox1.Text = string.Empty;
    }
    else
    {
        MessageBox.Show("You got it wrong");
        // 猜错后清空输入框方便下次输入
        textBox1.Text = string.Empty;
        // 输入错误时主动把焦点切回输入框
        textBox1.Focus();
    }
}
补充说明

WinForm的UI更新是在主线程中执行的,如果你在主线程执行死循环、耗时操作,都会导致界面无法正常重绘、出现卡顿、控件内容不显示的问题,避免在控件的事件回调中写无退出条件的循环逻辑。

内容的提问来源于stack exchange,提问作者cookie

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 10:15:04