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

C# Windows Forms猜数字游戏:求助实现猜测次数显示到TextBox

解决Windows Forms猜数字游戏的猜测次数显示问题

嘿,我看到你在实现猜数字游戏时遇到了显示猜测次数的问题,咱们一步步来修复它!

首先,先指出你现有代码里的几个小问题:

  • 你在TbxMinaResultat_TextChanged事件里重新声明了局部的guesses变量,这会覆盖类级别的guesses字段,而且ToString(guesses)的写法是错误的(正确用法是guesses.ToString())。更关键的是,这个事件完全不需要——我们不需要在TextBox内容变化时更新它,而是应该在猜测次数变化时主动更新TextBox。
  • 每次点击猜按钮(BtnGissa)后,你已经增加了guesses的计数,但没有同步更新tbxMinaResultat的文本内容,所以次数不会显示出来。
  • 点击“再玩一次”(BtnSpelaIgen)时,没有重置guesses和清空结果TextBox,会导致下一局的次数统计不对。

下面是修正后的完整代码,我标注了所有修改的地方:

public partial class Form1 : Form 
{ 
    Random rnd = new Random(); 
    int datornsTal; 
    int guesses; 
    int max; 
    public Form1() 
    { 
        InitializeComponent(); 
        lbxStörstaTalet.Items.Add(10); 
        lbxStörstaTalet.Items.Add(20); 
    } 
    private void BtnSpelaIgen_Click(object sender, EventArgs e) 
    { 
        gbxSpeldata.Enabled = true; 
        gbxSpelet.Enabled = false;
        // 重置猜测次数并清空结果TextBox
        guesses = 0;
        tbxMinaResultat.Text = guesses.ToString();
    } 
    private void LbxStörstaTalet_SelectedIndexChanged(object sender, EventArgs e) 
    { 
    } 
    // 移除不需要的TbxMinaResultat_TextChanged事件处理方法
    private void Form1_Load(object sender, EventArgs e) 
    { 
        // 初始化时显示次数为0
        tbxMinaResultat.Text = guesses.ToString();
    } 
    private void BtnStartaSpelet_Click(object sender, EventArgs e) 
    { 
        int max = int.Parse(lbxStörstaTalet.SelectedItem.ToString()); 
        datornsTal = rnd.Next(0, max); 
        gbxSpeldata.Enabled = false; 
        gbxSpelet.Enabled = true; 
        guesses = 0;
        // 开始新游戏时重置次数显示
        tbxMinaResultat.Text = guesses.ToString(); 
    } 
    private void BtnGissa_Click(object sender, EventArgs e) 
    { 
        int guess = int.Parse(tbxGissa.Text); 
        if (guess > datornsTal) 
        { 
            lblResultat.Text = "Gissa lägre"; 
            guesses++; 
        } 
        else if (guess < datornsTal) 
        { 
            lblResultat.Text = "Gissa Högre!"; 
            guesses++; 
        } 
        else if (guess == datornsTal) 
        { 
            lblResultat.Text = "Bra jobbat!"; 
            guesses++; 
        }
        // 每次猜测后更新TextBox的内容
        tbxMinaResultat.Text = guesses.ToString(); 
    } 
}

关键修改说明:

  1. 移除了TbxMinaResultat_TextChanged事件处理方法:这个事件是在TextBox内容被用户修改时触发的,但我们的次数是程序主动更新的,不需要这个事件。
  2. 在BtnStartaSpelet和BtnSpelaIgen中重置次数并更新显示:确保新游戏开始时次数从0开始,并且TextBox显示正确的初始值。
  3. 在BtnGissa方法末尾添加更新TextBox的代码:每次用户猜完,次数增加后立即把最新的次数显示到tbxMinaResultat中。
  4. 在Form1_Load中初始化TextBox显示:程序启动时就显示0次猜测,让界面更友好。

这样修改后,你的猜测次数就会实时显示在tbxMinaResultat里啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 07:44:35