如何在答案不正确的情况下继续在表单中显示label的值


namespace Game
{
public partial class Form2 : Form
{
String[] word = { "Ordinary", "Darkness", "Marriage" };
Random rnd = new Random();
public Form2()
{
InitializeComponent();
label1.Text = word[rnd.Next(0, word.Length)];
}
private void button1_Click(object sender, EventArgs e)
{
string guess;
guess = textBox1.Text;
while (guess != label1.Text)
{
if (guess != label1.Text)
MessageBox.Show("You got it right");
else
MessageBox.Show("You got it wrong");
}      
}

当我输入了一个错误的单词,它会变成else,之后的表单将不会在标签上显示这个单词。我是c#新手。

首先,这个逻辑是不正确的:

if (guess != label1.Text)
{
MessageBox.Show("You got it right");
}
else
MessageBox.Show("You got it wrong");

比较运算符应该是==。否则,它将是一个非常简单的游戏(从字面上猜测任何与目标字符串不匹配的字符串)。

一旦你纠正了,考虑一下你在这里做什么:

while (guess != label1.Text)
{
if (guess == label1.Text)
{
MessageBox.Show("You got it right");
}
else
MessageBox.Show("You got it wrong");
}
那么,如果猜测不正确,这里会发生什么?这个循环不断地循环,一遍又一遍,无穷无尽。所以这个程序基本上锁定了;并且变得无响应,因为逻辑正忙着无限循环一个在循环中永远不会改变的条件。

退后一步…你为什么要有这个循环?在这个按钮点击处理程序中,您要做的就是检查答案,所以只需检查答案:

private void button1_Click(object sender, EventArgs e)
{
if (textBox1.Text == label1.Text)
MessageBox.Show("You got it right");
else
MessageBox.Show("You got it wrong");
}

根本不需要循环,因为没有重复的操作。当按钮被点击时,这个逻辑已经被重新调用了。

整个while循环对我来说没有多大意义,因为检查看起来有点奇怪。你不想检查猜的是否等于标签吗?如果不等于,就在屏幕上显示"你猜错了"吗?你真的不需要在整个过程中使用while。

if (guess == label1.Text)
{
MessageBox.Show("You got it right"); 
}
else
{
MessageBox.Show("You got it wrong");
}