Я пытаюсь сохранить .text метки в базу данных, но иногда эта метка является символом бесконечности. Чтобы поймать это, я создал оператор if, который проверяет, является ли метка числом или нет, и выдает окно сообщения, чтобы сообщить пользователю. Однако чаще всего метка будет десятичным числом, а оператор if вызывает окно сообщения. Мне было интересно, может ли кто-нибудь помочь мне?Оператор C# if для проверки, если значение не является числом
private void btnSaveResults_Click(object sender, EventArgs e)
{
btnClearData.Enabled = true;
if (System.Text.RegularExpressions.Regex.IsMatch(lblAerobicCap.Text, "[^0-9]"))
{
MessageBox.Show("Im sorry, there seems to have been an error in the inputting of the readings, please restart the test");
}
else
{
AthletesDetailsNew users = new AthletesDetailsNew();
DateTime dateTimeVariable = DateTime.Now;
users.Date_Of_Test = dateTimeVariable;
users.First_Name = comboBoxFirstName.Text;
users.Surname = comboBoxNewSurname.Text;
users.Age = int.Parse(comboBoxAge.Text);
users.Account_Number = int.Parse(comboBoxAccountNumber.Text);
users.Aerobic_Capacity = /*Math.Truncate*/(decimal.Parse(lblAerobicCap.Text));
DataClassDataContext dbCtx = new DataClassDataContext();
dbCtx.AthletesDetailsNews.InsertOnSubmit(users);
try
{
dbCtx.SubmitChanges();
MessageBox.Show("Data saved");
}
catch
{
MessageBox.Show("Data failed to save");
}
}
}
Try используя 'double.TryParse()' –
Или 'decimal.TryParse'. У типов, у которых есть метод 'Parse', также есть' TryParse' –
Обратите внимание, что OP уже проверяет, является ли это число числом, поэтому проблема не выглядит на 'double.Parse()'. – wdosanjos