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

} I 계산기를 만드는 코드 위에서 사용계산기 - C#을

쉼표에 의하여 구분 천. 10 진수 값으로 쉼표 결과를 얻고 싶습니다.

텍스트 상자에 1,234.1234를 입력하고 싶지만 텍스트 상자에 1,234.1234를 입력 할 수 없습니다. 10 진수 값이없는 쉼표를 의미합니다.

아무도 친절하게 도와 주실 수 있습니까?

+1

... TextBox.TextChanged + = TextBoxTextChanged; 어떤 경우, CultureInfo를 사용하여 특정 문화권 번호를 포맷해야합니다. – Oscar

+3

@Oscar. 이벤트 처리기 ('- =')를 끄고 텍스트를 변경 한 다음 다시 켜는 ('+ =') 의도가있는 것처럼 보입니다. 이것은 무한히 이벤트를 되풀이하는 것으로부터'TextBox.Text'에 대한 할당을 멈추는 것입니다. – paxdiablo

답변

0

사용할 문화권을 제공해야합니다. 수천 징후로. 일반적으로 현재 문화권 사용자를 사용하고 싶습니다.

double.TryParse(value, System.Globalization.NumberStyles.Number, System.Globalization.CultureInfo.CurrentCulture, out dbl) 
+0

죄송합니다. Wertzui, 작동하지 않습니다. 1000.123을 입력하고 싶지만 입력 할 수 없습니다! –

+0

위의 코드로 "1000.123"문자열을 구문 분석하면 작동합니다. 귀하의 문화에 따라 결과는 100또는 1000.123입니다. – wertzui