2016-07-16 2 views
0
private void TextBox_TextChanged(object sender, EventArgs e) 
{ 
    string value = TextBox.Text.Replace(",", ""); 
    long ul; 
    if (long.TryParse(value, out ul)) 
     { 
      TextBox.TextChanged -= TextBoxTextChanged; 
      TextBox.Text = string.Format("{0:#,#0}", ul); 
      TextBox.SelectionStart = TextBox.Text.Length; 
      TextBox.TextChanged += TextBoxTextChanged; 
     } 
} 

Я хочу поставить запятую с десятичным значением в калькулятор, нажав кнопку в равной C# (пример: 1234,1234 в 1,234.1234)Comma с десятичным значением

Но это не дает мой результат желания. Не могли бы вы помочь мне решить эту проблему?

ответ

0

Попробуйте

TextBox.Text = ul.ToString("#,##0.0000"); 
0

Вы должны исправить имя вашего события и изменить логику немного, чтобы справиться с . без числа после него (например, 1.) путем добавления точки в строку. Пример:

private void TextBox_TextChanged(object sender, EventArgs e) 
{ 
    string value = TextBox.Text.Replace(",", ""); 
    decimal ul; 
    if (decimal.TryParse(value, out ul)) 
    { 
     TextBox.TextChanged -= TextBox_TextChanged; 
     if(ul % 1 == 0) // is the number integer 
      TextBox.Text = string.Format("{0:#,##0.#}", ul) + (TextBox.Text.EndsWith(".") ? "." : ""); 
     else 
      TextBox.Text = string.Format("{0:#,##0.0#####}", ul) ; 
     TextBox.SelectionStart = TextBox.Text.Length; 
     TextBox.TextChanged += TextBox_TextChanged; 
    } 
} 
Смежные вопросы