Текстовое поле для цены / наличных / валюты на 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 кода отДругой вопросы Вот.

Как я могу это исправить? Я неправильно использую примеры? Любая мысль приветствуется.

Ответы на вопрос(6)

Ваш ответ на вопрос