C# 如何让应用程序检查用户输入?

C# 如何让应用程序检查用户输入?,c#,winforms,random,C#,Winforms,Random,我正在制作一个附加教程示例,我无法找到检查用户输入的方法。我知道有很多方法可以对一些小事情进行对比,比如,当一个学生的成绩是90-100分时,也许你可以应用一个MessageBox.Show,表明这个学生的成绩在大多数情况下被认为是a。但是,我不知道在检查加法的和时使用哪种方法。与此类似,下面的代码片段将为用户产生新的问题 private void Newproblem_Click(object sender, EventArgs e) { Random Numbers = new Rand

我正在制作一个附加教程示例,我无法找到检查用户输入的方法。我知道有很多方法可以对一些小事情进行对比,比如,当一个学生的成绩是90-100分时,也许你可以应用一个
MessageBox.Show
,表明这个学生的成绩在大多数情况下被认为是a。但是,我不知道在检查加法的和时使用哪种方法。与此类似,下面的代码片段将为用户产生新的问题

private void Newproblem_Click(object sender, EventArgs e)
{
  Random Numbers = new Random();
  int number1;
  int number2;
  int Sum;

  number1 = Numbers.Next(400) + 101;
  number2 = Numbers.Next(400) + 101;
  theproblemLabel.Text = number1 + "  +  " + number2.ToString();
}

但我也希望能够检查用户的答案。有没有人能给我提供一个方法来实现这一点?如果有人能给我任何提示,我将不胜感激。

您可以将答案存储在文本框的Tag属性中

number1 = Numbers.Next(400) + 101;
number2 = Numbers.Next(400) + 101;
int answer = number1 + number2;

theproblemLabel.Text = string.Format("{0} + {1}", number1, number2);
theproblemLabel.Tag = answer;
然后,当用户单击按钮确认其答案时,您将对照存储的标记进行检查

private void Answer_Click(object sender, EventArgs e)
{
  int userAnswer;
  if(!Int32.TryParse(txtAnswer.Text, out userAnswer))
    MessageBox.Show("Please enter a number!");
  else
  {
    if(userAnswer == Convert.ToInt32(theproblemLabel.Tag))
      MessageBox.Show("Correct answer!");
    else
      MessageBox.Show("Wrong answer, try againg!");
  }
}

我假设您有一个名为
txtAnswer
的文本框,用户在其中键入答案,并单击一个名为
answer
的按钮确认答案,您可以将答案存储在文本框的标记属性中

number1 = Numbers.Next(400) + 101;
number2 = Numbers.Next(400) + 101;
int answer = number1 + number2;

theproblemLabel.Text = string.Format("{0} + {1}", number1, number2);
theproblemLabel.Tag = answer;
然后,当用户单击按钮确认其答案时,您将对照存储的标记进行检查

private void Answer_Click(object sender, EventArgs e)
{
  int userAnswer;
  if(!Int32.TryParse(txtAnswer.Text, out userAnswer))
    MessageBox.Show("Please enter a number!");
  else
  {
    if(userAnswer == Convert.ToInt32(theproblemLabel.Tag))
      MessageBox.Show("Correct answer!");
    else
      MessageBox.Show("Wrong answer, try againg!");
  }
}

我假设您有一个名为
txtAnswer
的文本框,用户在其中键入答案,并单击一个名为
answer
的按钮以确认答案。更好的方法是使用一个文本框回答问题,另一个文本框回答问题

顺便说一句,如果您以前使用过属性,您可以使用属性:
ReadOnly
,并将其设置为true,这样用户就无法修改问题

不同情况下的布局:

例如:

//Declare variables so you can use them globally
int number1, number2, sum, userSolution;
Random numbers;

private void btnProblem_Click(object sender, EventArgs e)
{
  numbers = new Random();
  number1 = numbers.Next(400) + 101;
  number2 = numbers.Next(400) + 101;

  sum = number1 + number2;
  txtProblem.Text = number1 + "  +  " + number2;
}

private void btnSolution_Click(object sender, EventArgs e)
{
  // You try to parse the text to a integer,
  // if it works its stored in userSolution,
  // If it fails, it shows the messagebox
  if (!int.TryParse(txtSolution.Text, out userSolution))
  {
    MessageBox.Show("Input is not a valid number.");
  }
  else
  {
    // Check user solution and compare it to the sum
    if (userSolution == sum)
    {
      MessageBox.Show("Correct!", "Problem Solved!");
    }
    else
    {
      MessageBox.Show("Not Correct.", "Please try again.");
    }
  }
}

更好的方法是使用文本框回答问题,使用另一个文本框回答问题

顺便说一句,如果您以前使用过属性,您可以使用属性:
ReadOnly
,并将其设置为true,这样用户就无法修改问题

不同情况下的布局:

例如:

//Declare variables so you can use them globally
int number1, number2, sum, userSolution;
Random numbers;

private void btnProblem_Click(object sender, EventArgs e)
{
  numbers = new Random();
  number1 = numbers.Next(400) + 101;
  number2 = numbers.Next(400) + 101;

  sum = number1 + number2;
  txtProblem.Text = number1 + "  +  " + number2;
}

private void btnSolution_Click(object sender, EventArgs e)
{
  // You try to parse the text to a integer,
  // if it works its stored in userSolution,
  // If it fails, it shows the messagebox
  if (!int.TryParse(txtSolution.Text, out userSolution))
  {
    MessageBox.Show("Input is not a valid number.");
  }
  else
  {
    // Check user solution and compare it to the sum
    if (userSolution == sum)
    {
      MessageBox.Show("Correct!", "Problem Solved!");
    }
    else
    {
      MessageBox.Show("Not Correct.", "Please try again.");
    }
  }
}


对不起,我不明白你在干什么!?你想要什么输入?您使用的是控制台应用程序、WinForms还是WPF?您的确切意思是什么?是否要查看用户为求和数字1+2的结果填写的内容?哦,对不起,我正在使用Microsoft Visual Studio来执行此操作。@bash.d她没有使用控制台应用程序,而是使用文本框。它们不存在于控制台中apps@Cindy当前位置将所有信息放在你的问题中,而不是隐藏在评论中。对不起,我不明白你在干什么!?你想要什么输入?您使用的是控制台应用程序、WinForms还是WPF?您的确切意思是什么?是否要查看用户为求和数字1+2的结果填写的内容?哦,对不起,我正在使用Microsoft Visual Studio来执行此操作。@bash.d她没有使用控制台应用程序,而是使用文本框。它们不存在于控制台中apps@Cindy:把所有的信息放在你的问题中,而不是隐藏在评论中。提出非黑客解决方案怎么样?这类数据应该存储在合理的数据结构中,而不是填充到UI控件的额外字段中。非常感谢史蒂夫。(:@siride,因为这是一个非常简单的问题?。因为没有必要增加额外的复杂性?也许如果用户询问如何存储一堆问题和答案,将需要更好的方法,但是,我认为,在这个阶段,让解决方案变得简单。提出非黑客解决方案如何?此类数据应该被保存在合理的数据结构中使用红色,而不是填充到UI控件的额外字段中。哦,好的。非常感谢Steve。(:@siride,因为这是一个非常简单的问题?。因为没有必要增加额外的复杂性?也许如果用户询问如何存储一堆问题和答案,将需要更好的方法,但是,我认为,在这个阶段,让解决方案变得简单。@Cindy如果你有任何其他问题,请随意提问。我喜欢这些小练习:P只是为了教学。这个解决方案在不需要全局变量的地方引入全局变量。当然,在这里,它们不是问题,但是当你可以用不同的方式工作时,最好避免它们。@Steve是的,这不是真的需要,但你必须在这里使用它们,至少是总和,因为你在创建时计算总和这是一个新问题,如果您想更改文本框输入,用户无法更改解决方案,或者只是将文本框设置为只读以防止出现这种情况。@Cindy如果您有任何其他问题,请随意提问。我喜欢这些小练习:P9只是为了教学。此解决方案在不需要全局变量的地方引入全局变量。当然当然,在这里,它们不是问题,但是当你可以以不同的方式工作时,最好避免它们。@Steve是的,这不是真的需要,但你必须在这里使用它们,至少是总和,因为你在创建新问题时计算总和,这样,如果你想更改文本框输入,或者只是放置文本B,用户就不能更改解决方案将ox设置为只读以防止出现这种情况。