Как подготовить текстовое поле для строки, если оно содержит целое число - PullRequest
0 голосов
/ 27 февраля 2019

В настоящее время у меня есть некоторые проблемы с проверкой ошибок в текстовом поле.Он содержит переменную (называемую Price) как Double.Его цель состоит в том, чтобы взять число, и при нажатии кнопки он добавляет его к промежуточному итогу, отображаемому в другом текстовом поле.

Теперь у меня возникает ошибка при проверке, является ли текстовое поле пустым, используя:

!string.IsNullOrWhiteSpace(txtAddItem.Text)

Тем не менее, я не уверен, как проверить ошибки, если была введена строка или символ, отличный от числа.Любые идеи приветствуются.

Ответы [ 3 ]

0 голосов
/ 27 февраля 2019

Вы можете использовать Double.TryParse()

double number;
if (Double.TryParse(txtAddItem.Text, out number)) {
    Console.WriteLine("'{0}' is a valid double: {1}", value, number);
} else {
    Console.WriteLine("Unable to parse '{0}' as a valid double", value);
} 
0 голосов
/ 27 февраля 2019

Метод 1: RegEx

Вы должны попытаться использовать регулярное выражение.Регулярные выражения (вкратце Regex) используются для сопоставления строк с шаблонами.Например, если вы хотите разрешить только целые числа:

Regex r = new Regex(@"^[0-9]+$")

Класс Regex имеет метод .IsMatch(string s), где s - этоСтрока, которую вы хотите проверить по шаблону.

Метод 2: try-catch и Parse ()

Еще один способ сделать это, который может быть немного новичком-дружелюбный, это блок "попробуй-поймай".( Я предполагаю, что имя вашего TextBox - TextBox1, и вы сохраняете значение суммы в переменной runningSum. )

try {
    double x = double.Parse(TextBox1.Text);
    runningSum += x;
catch (ArgumentException ax) {
    //handle if it is not a number in the TextBox
}

Метод 3: TryParse ()

Более продвинутая версия, сочетающая try-catch и Parse(), использует метод double.TryParse(), который возвращает значение true / false в зависимости от того, было ли преобразование успешным или нет.

double x;
if (double.TryParse(TextBox1.Text, out x)) {
    runningSum += x;
} else {
    //handle if it is not a number in the TextBox.
}
0 голосов
/ 27 февраля 2019

Если значение должно быть допустимым double, вы можете использовать 'double.TryParse'.Что-то вроде:

if (double.TryParse(txtAddItem.Text, out double price) == false)
{
  // Show error or clear textbox
}
else
{
  // Value is valid, add to total
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...