2012-10-14 2 views
2

3 자리 그룹마다 ","를 추가하고 싶습니다. 예 : 나는 123456789를 입력 할 때 텍스트 상자는 123,456,789을 표시하고 나는이 코드를 가지고 :텍스트 상자에 소수점 표시 형식 표시

private void textBox1_KeyUp(object sender, KeyEventArgs e) 
{ 
    if (!string.IsNullOrEmpty(textBox1.Text)) 
    { 
     System.Globalization.CultureInfo culture = new System.Globalization.CultureInfo("en-US"); 
     decimal valueBefore = decimal.Parse(textBox1.Text, System.Globalization.NumberStyles.AllowThousands); 
     textBox1.Text = String.Format(culture, "{0:N0}", valueBefore); 
     textBox1.Select(textBox1.Text.Length, 0); 
    } 
} 

나는이 형식에 대한보다 구체적인되고 싶어요. 나는 단지이 텍스트 상자에 대한 숫자를 입력하고 123,456,789.00처럼 (. 그 후 형) 진수 형식을 사용하려면 나는이 코드를 사용하려고 :

private void textBox1_KeyPress(object sender, KeyPressEventArgs e) 
{ 
    if (!char.IsControl(e.KeyChar) && !char.IsDigit(e.KeyChar) && e.KeyChar != '.') 
    { 
     e.Handled = true; 
    } 
} 

을하지만

+0

방법이 작동하지 않는 이유는 무엇입니까? 실제로 코드가 실제로 무엇을합니까? 오류가있는 경우 포함하십시오. 오류 출력이 있으면 포함하십시오. – Sheena

+0

두 가지 모두에 가입하고 싶습니다. 그러나 어떻게 수행하는지 모르겠습니다. – arilupus

답변

0

당신은 숫자를 사용할 수 있습니다 작동하지 않습니다

private void textBox1_TextChanged(object sender, EventArgs e) 
{ 
    decimal myValue; 
    if (decimal.TryParse(textBox1.Text, out myValue)) 
    { 
     textBox1.Text = myValue.ToString("N", CultureInfo.CreateSpecificCulture("en-US")); 
     textBox1.SelectionStart = 0; 
     textBox1.SelectionLength = 0; 
    } 
} 

private void textBox1_KeyPress(object sender, KeyPressEventArgs e) 
{ 
    if (!char.IsDigit(e.KeyChar) && e.KeyChar != '.') 
    { 
     e.Handled = true; 
    }   
} 
+1

작업이 필요합니다. TryParse는 또한 문화에 대해 알아야합니다. Ctrl + V로 텍스트를 붙여 넣을 수있는 경우 KeyPress는별로 의미가 없습니다. 대신 Validating 이벤트를 사용하십시오. –

+0

결과가 너무 이상해. 텍스트 상자가 바뀌면 멋지지만 자동 십진법이 있습니다. 그러나 12345를 입력하면 텍스트 상자에 54,321.00 – arilupus

0

http://msdn.microsoft.com/en-us/library/fzeeb5cd.aspx#Y600

: 다음과 같은 작업을해야 (수정 버전) 같은 MSDN 뭔가에 정의 된 형식 문자열을 그룹화

십진수 데이터 형식으로 값을 파싱 한 후 에 ToString을 사용하여 해당 십진수 값을 할당하고 형식 매개 변수를 전달하십시오.

TextBox1.Text = valueBefore.ToString("C") 

필자는 텍스트 상자에 대한 입력을 차단하는 한, 이미 해당 모드가 있다고 생각했습니다.

어쨌든,이 시도 :

if !(Char.IsControl(e.KeyChar) || Char.IsDigit(e.KeyChar) || (e.KeyChar == Keys.Decimal && !(TextBox1.Text.Contains(".")))) 
{ 
    e.Handled = true; 
} 
관련 문제