C#IF检查文本框输入是否大于0,并且还检查它是否为整数(数字)

时间:2018-06-27 07:25:34

标签: c# if-statement textbox

我制作了一个记分板,用户在其中输入了textBox1中允许的最大点数。我有两个按钮。左边的一个增加标签左侧的值,右边的一个增加标签右侧的值。一旦一方达到最大分数,我将使用MessageBox宣布获胜者。

我想知道如何检查用户是否未在文本框中输入整数。我已经将其设为大于0的条件。

这就是我所拥有的:SCOREBOARD IMAGE

public void winner()
{
    int max = Convert.ToInt32(textBox1.Text);

    if (max <= 0 || //this is where i want to check if its an integer)
    {
        MessageBox.Show("Press RESET and use a value greater than 0");
        btn_left.Enabled = false;
        btn_right.Enabled = false;
        textBox1.ResetText();
    }
    else if (left == max)
    {
        MessageBox.Show("Winner: Left Player");
        textBox1.Enabled = false;
        btn_left.Enabled = false;
        btn_right.Enabled = false;
    }
    else if (right == max)
    {
        MessageBox.Show("Winner: Right Player");
        textBox1.Enabled = false;
        btn_left.Enabled = false;
        btn_right.Enabled = false;
    }
}

private void btn_left_Click(object sender, EventArgs e)
{
    left = left + 1;
    lbl_score.Text = left.ToString() + " - " + right.ToString();
    winner();
}

private void btn_right_Click(object sender, EventArgs e)
{
    right = right + 1;
    lbl_score.Text = left.ToString() + " - " + right.ToString();
    winner();
}

private void btn_reset_Click(object sender, EventArgs e)
{
    textBox1.Enabled = true;
    textBox1.Text = "0";
    btn_left.Enabled = true;
    btn_left.Enabled = true;
    left = 0;
    right = 0;
    lbl_score.Text = left.ToString() + " - " + right.ToString();
}

编辑:我检查了注释中建议的另一种解决方案,但是除了我在此线程中选择的答案之外,那里的所有答案似乎都对我不起作用

5 个答案:

答案 0 :(得分:1)

您需要解析文本以确保其数字

 public void winner()
 {

      if (!int.TryParse(textBox1.Text, out int max))
      {
         MessageBox.Show("Dem numbers aren't numbers");
         return;
      }

      ...

Int32.TryParse Method (String, Int32)

  

将数字的字符串表示形式转换为其32位带符号   等价的整数。返回值指示是否转换   成功。

答案 1 :(得分:1)

使用TryParse输入测试编号

private bool function GreaterNumber(string text)
{
    bool result = Int32.TryParse(myTextBox.Text, out number);
    return result && number > 0;
}

答案 2 :(得分:1)

您可以在下面添加以下代码行:

int max;
bool result = Int32.TryParse(textBox1.Text, out max);
if (result && max > 0) ...

感谢@john的建议。

干杯!

答案 3 :(得分:0)

您可以先使用int.TryParse(n,out value)检查整数,然后检查是否大于零。

int value;
bool success=int.TryParse(n, out value);

if(success)
{
if(n>0)
//do something
}

答案 4 :(得分:0)

尝试

  string a = textBox1.txt;
  int b;
  bool ans = int.TryParse(a, out b);

  if (ans == true) 
  {
       // your code
  }
  else
  {
      MessageBox.Show("invalid input"). // or whatever you want.
  }       

如果您已经在其他地方声明了a,b变量,请更改名称。