Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Общие вопросы по .NET и C# > Проверка типа в TextBox


Автор: Wizard84 1.11.2006, 12:43
Подскажите, плиз, как сделать проверку, что введенное в TextBox значение - целое число?

Автор: Scolopendra 1.11.2006, 14:11
Как вариант, проверяешь каждый введенный символ в textBox является ли он цифрой.
if (Char.IsDigit(textBox1.Text[0]))
      {

      }

Автор: ivashkanet 1.11.2006, 14:38
Wizard84, если фрэймворк второй, то 
Код

            int i;
            string numberInString = "1465.4654";

            if (!int.TryParse(numberInString, out i))
                Console.WriteLine("Вводи нормальное число.");


Если нет, то
Код

            int i;
            string numberInString = "1465.4654";

            try
            {
                i = int.Parse(numberInString);
            }
            catch 
            {
                Console.WriteLine("Вводи нормальное число.");
            }


Автор: Wizard84 2.11.2006, 19:35
Спасибо

Автор: thomas 2.11.2006, 23:36
Wizard84, 

Привет.
Вот еще вариант. Написано самостоятельно.

Код

 public static bool isNumeric(string tekst)
        {
            int len, counter;
            bool res = true;
            len = tekst.Length;
            counter = 0;
            while (counter < len && res)
            {
                res = char.IsNumber(tekst, counter);
                counter++;
            }
            return res;
        }

Запихиваешь это в отдельный класс со всякими полезностями и юзаешь когда надо.
Я это использую когда надо проверить что юзверь вводит в TextBox. Если циферки то хорошо, если что то еще, то пусть вводит снова.

Пользуешь так:

if(clsTool.isNumeric(TextBox1.Text))
{
      //  нужный код
}
else
{
      MessageBox.Show("Ошибка ввода.");
      TextBox1.Text="";
}

Автор: archimed7592 3.11.2006, 08:45
thomas, а в чём преимущество перед стандартными TryParse\Parse?

Автор: mr.DUDA 3.11.2006, 09:50
thomas, твой код не даст ввести отрицательное и дробное число.

Автор: Exception 3.11.2006, 16:03
thomas, помнится, уже обсуждалась целесообразность использования "самопальных" методов smile ?

Автор: thomas 3.11.2006, 20:07
mr.DUDA, 
Про отрицательное число твоя правда, а про дробное вопрос не стоял.
Цитата

как сделать проверку, что введенное в TextBox значение - целое число? 


 smile 


Exception, 
А чем плох самопальный метод. Он ведь тоже основан на системном - char.IsNumber.

Автор: archimed7592 3.11.2006, 21:20
thomas, примерно тем же, почему самопальный метод плох в php\perl\java\etc. msil - это конечно хорошо, но это не ассемблер...ещё стандартные ф-ции учитывают локализацию.

Автор: mr.DUDA 3.11.2006, 23:00
thomas, про дробное это я так, для справки.  smile 

Кстати, если углубляться, то archimed7592 совершенно прав - придётся проверять текущую культуру или перестраховываться, т.к. разделитель дробной части зависит от культуры.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)