2015-03-09 5 views
-1
if (double.TryParse(txtDays.Text, out days) == false) 
{ 
    MessageBox.Show("Enter a whole number for days.", Text, MessageBoxButtons.OK, MessageBoxIcon.Information); 
    txtDays.Focus(); 
    return; 
} 

Я новичок в C#, так что любая помощь будет оценена :)Проверка, что пользователь не вводит десятичную в C#

+6

В чем ваш вопрос в точности? Вы сказали 'decimal' в своем названии, но в вашем примере разбирали' double'. И просто 'if (decimal.TryParse (txtDays.Text, out days))' будет казаться лучше .. –

+3

Как насчет использования числового элемента управления вверх/вниз, а не текстового поля? –

+3

Кроме того, если вы хотите, чтобы все целые значения и продолжали использовать текстовое поле, почему бы не использовать 'if (! Int.TryParse (...)'? –

ответ

-1

Вы бы лучше использовать регулярное выражение для проверки этого I подозреваемого. Следующий код:

Regex regex = new Regex(@"^\d$"); 

будет проверить, что строка является целым числом, а на самом деле он проверяет, что одна цифра представляет собой целое число, ссылка ниже показано, как изменить его, чтобы проверить полную строку.

(код приходит от этого вопроса: Regex for numbers only)

+0

Регулярное выражение для десятичного разбора? oO –

+0

@ SonerGönül, no для подтверждения того, что введенное является целым числом, а не десятичным в соответствии с его «Подтверждающий пользователь не вводит десятичный знак». Если он передает регулярное выражение, то он действителен, иначе это не. – Pheonyx

2

Вы хотите, чтобы предотвратить, что пользователь вводит десятичный разделитель? Значит, ему разрешено использовать целые числа? Тогда не пытайтесь разобрать на double но int:

if (!int.TryParse(txtDays.Text.Trim(), out days)) 
{ 
    MessageBox.Show("Enter a whole number for days.", Text, MessageBoxButtons.OK, MessageBoxIcon.Information); 
    txtDays.Focus(); 
    return; 
} 

Может быть, это даже лучше использовать uint.TryParse так, что предотвращает - знак, но это зависит от того, если отрицательные дни возможны.

Но вы должны рассмотреть возможность использования NumericUpDown-control

0

Есть несколько подходов, и все они покрыты здесь:
How do I make a textbox that only accepts numbers?

Наиболее распространенным подходом является использование NumericUpDown управления, а не TextBox.

Если вы хотите окно с сообщениями, ответ Тима в значительной степени соответствует вашим потребностям.

Смежные вопросы