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(); } }
关键修改说明:
- 移除了
TbxMinaResultat_TextChanged事件处理方法:这个事件是在TextBox内容被用户修改时触发的,但我们的次数是程序主动更新的,不需要这个事件。 - 在
BtnStartaSpelet和BtnSpelaIgen中重置次数并更新显示:确保新游戏开始时次数从0开始,并且TextBox显示正确的初始值。 - 在
BtnGissa方法末尾添加更新TextBox的代码:每次用户猜完,次数增加后立即把最新的次数显示到tbxMinaResultat中。 - 在
Form1_Load中初始化TextBox显示:程序启动时就显示0次猜测,让界面更友好。
这样修改后,你的猜测次数就会实时显示在tbxMinaResultat里啦!
内容的提问来源于stack exchange,提问作者Wiktoria Nordqvist
相关产品推荐
相关产品推荐

