При первом выходе из этого текстового поля его содержимое будет изменено на «$ 123» (например). Во второй раз, когда вы уйдете, попытка преобразовать это в int вызовет исключение.
Вы можете использовать перегрузку TryParse , которая принимает NumberStyle
, что-то вроде этого, при условии, что ваша цель - просто показать значение валюты без десятичных знаков.
double number;
if (double.TryParse(txtAmount.Text, NumberStyles.Currency, CultureInfo.CurrentUICulture, out number))
{
txtAmount.Text = number.ToString("C0");
}
else
{
MessageBox.Show("Could not convert.");
}
Прочитав комментарий Доната к его ответу, я не уверен, какова ваша цель. Если вы хотите обрезать центы, но по-прежнему показывать «.00», вы можете сделать это:
txtAmount.Text = ((int)number).ToString("C");
Или сделайте так, чтобы округлилось:
txtAmount.Text = (Convert.ToInt32(number)).ToString("C");
Если это не поможет, пожалуйста, уточните и сообщите нам, чего вы пытаетесь достичь.