2015-01-20 6 views
1

사용자가 입력 할 TextBox가 하나 있습니다.TextBox에서 하이픈을 두 자리 뒤에 자동으로 삽입하는 방법은 무엇입니까?

텍스트 상자에 사용자 입력은 형식은 내가 삽입 할이

01-22-34-40-33

처럼해야 할 때 "-"를 2 자리 숫자 후 TextChanged 이벤트 핸들러. 그들은 심지어 경우

if(txtRandomThirdTypeSales.Text.Length == 2) 
{ 
    txtRandomThirdTypeSales.Text += "-"; 
} 
else if (txtRandomThirdTypeSales.Text.Length == 5) 
{ 
    txtRandomThirdTypeSales.Text += "-";   
} 
else if (txtRandomThirdTypeSales.Text.Length == 8) 
{ 
    txtRandomThirdTypeSales.Text += "-";   
} 
else if (txtRandomThirdTypeSales.Text.Length == 11) 
{ 
    txtRandomThirdTypeSales.Text += "-"; 
} 
+0

"작동하지 않음"이란 무엇을 의미합니까? 무슨 일이 일어나고 있는지 알기 위해 몇 가지 중점을 뒀습니까? – RezaRahmati

+0

내 말은, 조건이 무엇보다 더 많은 것이 있다면 기능이 없다는 것입니다! –

+0

내 대답을 시도하고 상태를 공유하십시오 – Sumeshk

답변

2

이 방법으로 시도해주세요. 도움이 될 수 있습니다.

private void textBox1_KeyDown(object sender, KeyEventArgs e) 
    { 
     string sVal = textBox1.Text; 

     if (!string.IsNullOrEmpty(sVal) && e.KeyCode != Keys.Back) 
     { 
      sVal = sVal.Replace("-", ""); 
      string newst = Regex.Replace(sVal, ".{2}", "$0-"); 
      textBox1.Text = newst; 
      textBox1.SelectionStart = textBox1.Text.Length; 
     } 
    } 

도움이 필요하면 알려주세요.

+1

왜 그런 간단한 요구 사항을 위해 Regex를 사용하고 싶습니까? –

+0

큰 실수를하지 않으면 백 스페이스 삭제 이벤트를 수락하는 방법은? –

+0

업데이트 코드가 있습니다. "textBox1_KeyPown"이벤트를 "textBox1_KeyDown"으로 변경하고 백 스페이스 삭제 이벤트에 대해이 conditon "e.KeyCode! = Keys.Back"을 추가하십시오. –

1

어쩌면이

if(txtRandomThirdTypeSales.Text.Count(x => x != '-') % 2 == 0) 
{ 
    txtRandomThirdTypeSales.Text += "-"; 
} 

- 및 검사를하지 않은이 모든 문자를 계산 그 방법을 시도 할 수 있습니다 :

나는이 있지만 작업을 같이 할 . 있다면 '-'를 추가하십시오.

정규식이있는 숫자인지 확인하여 더 제한적으로 만들 수 있습니다. ^\d

+0

누군가 마지막 "-"을 삭제하려고하면 어떻게됩니까? "12-"로 백 스페이스 키를 누르는 것과 같은가요? – JleruOHeP

+0

나는 당신을 시험해 보았습니다 만, 타입 2 자리 숫자 뒤에 오류가있는 것처럼 보입니다 ...! –

0

TextBox 마스킹을 시도 했습니까? 의 WinForm 당신은 또한 백 스페이스 키 아래를 처리하고 아래로 키를 삭제하는 코드를 추가 할 수 있습니다이

if(txtRandomThirdTypeSales.Text.Length % 3 == 2) 
{ 
    txtRandomThirdTypeSales.Text += "-"; 
} 

를 시도하십시오 수 참고 http://msdn.microsoft.com/en-us/library/system.windows.forms.maskedtextbox.aspx

+0

Textbox Masking이 정적 형식이거나 동적 형식으로 처리하는 방법이 있습니까? –

+0

가면을 찾으려고하는 숫자가 고정 된 길이입니까? – progrAmmar

+0

아니, 그것은 동적 인 길이입니다! 사용자가 텍스트 상자에 몇 자릿수 입력했는지는 중요하지 않습니다. –

1

입니다 여기에

을 제어에 사용할 수 있습니다.

+0

나는 당신의 조건을 잘 해봤지만, 커서가 텍스트 상자의 시작 부분으로 어떻게 이동해야 커서가 마지막 입력에 있어야합니까? –

관련 문제