Текстовое поле для цены / наличных / валюты на C #
У меня есть проблема, которая преследует меня некоторое время. Я пробовал некоторые решения, но они нет работал.
У меня есть текстовое поле для ввода денег (например, 999,99 долларов США). Однако мне нужно автоматически ввести "," а также "." правильно отобразить значение.
Я попробовал два решения. Одним из них является это:
private void tx_ValorUnidade_TextChanged(object sender, EventArgs e)
{
string value = tx_ValorUnidade.Text.Replace(",", "").Replace("R$", "");
decimal ul;
//Check we are indeed handling a number
if (decimal.TryParse(value, out ul))
{
//Unsub the event so we don't enter a loop
tx_ValorUnidade.TextChanged -= tx_ValorUnidade_TextChanged;
//Format the text as currency
tx_ValorUnidade.Text = string.Format(System.Globalization.CultureInfo.CreateSpecificCulture("pt-BR"), "{0:C2}", ul);
tx_ValorUnidade.TextChanged += tx_ValorUnidade_TextChanged;
}
}
Результат, однако, очень странный.
Другой это:
private void tx_ValorUnidade_KeyUp(object sender, KeyEventArgs e)
{
if (!string.IsNullOrEmpty(tx_ValorUnidade.Text))
{
System.Globalization.CultureInfo culture = new System.Globalization.CultureInfo("en-US");
int valueBefore = Int32.Parse(tx_ValorUnidade.Text, System.Globalization.NumberStyles.AllowThousands);
tx_ValorUnidade.Text = String.Format(culture, "{0:N0}", valueBefore);
tx_ValorUnidade.Select(tx_ValorUnidade.Text.Length, 0); *
}
}
Это своего рода работает, но есть проблема: если пользователь хочет вставить что-то вроде 10,00 $, он может 'т. Также вылетает после 5 номеров.
Для оригинальной ссылки, я получил 2 кода отДругой вопросы Вот.
Как я могу это исправить? Я неправильно использую примеры? Любая мысль приветствуется.