Разрешить только цифры в текстовом поле С#

Возможный дубликат:
Как я могу разрешить ввод только 0 или 1 в TextBox?
Разрешить только целые числа в текстовых полях

Сейчас я работаю над программой, и у меня есть несколько простых textboxes. Я продолжаю получать сообщение об ошибке, когда ввод textbox НЕ является числом, потому что он пытается преобразовать его в целое число.

Код очень простой:

    int optelNumber = Convert.ToInt32(textBox2.Text);
    MessageBox.Show("Please enter a digit."); //if optelNumber is not a digit

Например:

input in textbox = "Hello !" => pops up the Mess.Box
input in textbox = 123245 => keep running the program

Надеюсь, этой информации достаточно. Я искал почти все другие темы, но весь код был для меня слишком продвинутым. :( Спасибо за ваше время

  • редактировать :

messagebox должен поймать ошибку и предотвратить сбой программы.

  • редактировать :

    int vedett = 0, duvel = 0, kDuvel = 0, kriek = 0, pils = 0;
    
    //only digits allowed here
    int optelNumber = Convert.ToInt32(textBox2.Text);
    
    switch(comboItem)
    {
    case "vedett":
      vedett += optelNumber;
      break;
    case "duvel":
      duvel += optelNumber;
      break;
    case "kl. duvel":
      kDuvel += optelNumber;
      break;
    case "pils":
      pils += optelNumber;
      break;
    case "kriek":
      kriek += optelNumber;
      break;
    case "":
      MessageBox.Show("Kies een andere drank.");
      break;
    }
    

person Nick Peelman    schedule 04.02.2013    source источник
comment
Я не знаю, нужно ли это вам, но может помочь blog.csharphelper.com/2012/11/20/   -  person Cesar A. Rivas    schedule 05.02.2013


Ответы (1)


Вам нужно сделать int.TryPase

    int result;
    if (int.TryParse(textBox2.Text, out result))
      int optelNumber = Convert.ToInt32(textBox2.Text);

or

int result;
int optelNumber; 
        if (int.TryParse(textBox2.Text, out result))
          optelNumber  = result;
person DJ Burb    schedule 04.02.2013
comment
В чем причина повторного использования Convert.ToInt32? результат имеет значение..? - person Lews Therin; 05.02.2013
comment
ConvertToInt32 вызывает int.Parse неявно. Но если строка равна нулю, int.Parse выдает исключение, тогда как Convert.ToInt32 возвращает 0. - person Tim Schmelter; 05.02.2013
comment
отредактировано для лучшей практики кодирования. Хотя любой из них должен работать - person DJ Burb; 05.02.2013
comment
На самом деле не работает нет: это, вероятно, я, я добавлю остальную часть кода, чтобы сделать его более понятным - person Nick Peelman; 05.02.2013
comment
@DJBurb Я просто никогда не видел, чтобы это использовалось таким образом.. - person Lews Therin; 05.02.2013
comment
DjBurb, у меня сработало, просто нужно было выяснить, что если (int.TryParse(textBox2.Text, out result)) сделал. Большое спасибо ! - person Nick Peelman; 05.02.2013
comment
@LewsTherin: Почему вы удалили свой ответ? - person Patrick; 05.02.2013
comment
@Patrick Эй, я не знаю .. DjBurb прав :P Хотя я все еще не вижу смысла в 1-м методе :O - person Lews Therin; 05.02.2013
comment
@LewsTherin: Но твой ответ был чище. Я тоже не понимаю первый метод в этом ответе. Я тоже не вижу лучших практик кодирования. - person Patrick; 05.02.2013
comment
@ Патрик, лол, я тоже. Я почитаю позже, чтобы посмотреть, не пропустил ли я что-нибудь ... в любом случае, похоже, что ОП это понял;) - person Lews Therin; 05.02.2013
comment
Ник, если этот ответ помог, можешь ли ты принять его? - person DJ Burb; 14.02.2013