C # IF, который проверяет, является ли ввод текстового поля больше 0, а также проверяет, является ли оно целым числом (числовым) - PullRequest
0 голосов
/ 27 июня 2018

Я сделал табло, где пользователь вводит максимально допустимое количество очков в текстовом поле1. У меня есть две кнопки. Левый увеличивает значение на левой стороне метки, а правый увеличивает значение на правой стороне метки. Как только одна сторона набирает максимальное количество очков, я объявляю победителя с помощью MessageBox.

Я хочу знать, как проверить, не вводил ли пользователь целое число в текстовое поле. Я уже поставил условие, чтобы оно было больше 0.

Это то, что у меня есть: ИЗОБРАЖЕНИЕ С ИСПОЛЬЗОВАНИЕМ

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 голосов
/ 27 июня 2018

Попробуйте

  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 где-то еще, пожалуйста, измените имя.

0 голосов
/ 27 июня 2018

Сначала вы можете проверить целое число, используя int.TryParse (n, out out) и проверку на наличие больше нуля.

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

if(success)
{
if(n>0)
//do something
}
0 голосов
/ 27 июня 2018

с использованием TryParse для ввода номера теста

private bool function GreaterNumber(string text)
{
    bool result = Int32.TryParse(myTextBox.Text, out number);
    return result && number > 0;
}
0 голосов
/ 27 июня 2018

Вы можете добавить следующие строки кода после:

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

Спасибо @john за предложения.

ура!

0 голосов
/ 27 июня 2018

Вам нужно проанализировать текст, чтобы убедиться, что это номер

 public void winner()
 {

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

      ...

Метод Int32.TryParse (String, Int32)

Преобразует строковое представление числа в его 32-разрядное знаковое целочисленный эквивалент. Возвращаемое значение указывает, является ли преобразование удалось.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...