2011-02-11 7 views
1

사용자가 시간 값을 XX : XX : XX 형식으로 입력하도록하려는 TextBox가 있습니다. 이미이 형식으로 입력했는지 확인하기 위해 유효성을 이미 확인했습니다. 그러나 이제 자동으로 콜론을 사용하고 싶습니다. 나는 그들에게 텍스트 박스에 들어가기를 바라고, 사용자가 숫자를 타이핑 할 때 콜론을 건너 뛰기 만하면된다. TextBox를위한 포맷 데코레이터를 사용할 수 있습니까?WPF 텍스트 상자에서 기본 텍스트 사용

편집 : 난 당신이 사용자 지정 컨트롤을 만들 수 바닐라 WPF에 충실하려는 경우

답변

4
+0

모든 모양이 좋지만 바닐라 WPF를 사용하는 것이 좋습니다. WPF 4를 사용하고 있습니다. – s73v3r

+0

전체 툴킷을 사용하고 싶지 않은 경우, 위대한 컨트롤이 있기 때문에 가치가 있지만 소스에 액세스하여 [필요한 컨트롤 만] (http://wpftoolkit.codeplex.com/SourceControl/changeset/view/68480#1679740) –

+1

@ Tom Dudfield에 동의합니다. 거기에 좋은 물건 톤있어. 당신은 WPF로 구운 기능을 찾지 않을 것이고, 툴킷이하는 일을 거의 끝내게 될 것입니다. (기본 텍스트 상자에서 파생되고 자신 만의 것을 구하는 것입니다. –

0

에서 마스크 된 텍스트 상자를 사용하여 WPF 4를 사용하고 3 개의 텍스트 상자를 추가하십시오.

콜론을 사이에 넣고 한 텍스트 상자에서 다른 텍스트 상자로 포커스를 전달하고 동시에 숫자 만 허용하는 keydown 이벤트를 처리합니다.

다시 : 툴킷을 사용하면 작업량이 줄어들 수 있습니다.

0

Erno가 제안하는 세 가지 텍스트 상자를 사용하는 것이 더 나은 해결책 일 수 있지만 TextChanged 이벤트를 사용하여 텍스트에 콜론을 추가하면 (사용자를 혼란스럽게 할 수 있음) 두 번째 이후에는 코드를 삽입 할 수 있습니다. 및 다섯 번째 문자 :

private void TextBox_TextChanged(object sender, TextChangedEventArgs e) 
{ 
    TextBox tb = sender as TextBox; 
    if (e.Changes.Count == 1) 
    { 
     if (e.Changes.ElementAt(0).AddedLength == 1 && (tb.Text.Length == 2 || tb.Text.Length == 5)) 
     { 
      tb.Text += ":"; 
      tb.SelectionStart = tb.Text.Length; 
     } 
    } 
} 
관련 문제