2011-02-11 104 views
1

我有一个TextBox,我希望我的用户输入格式为XX:XX:XX的时间值。我已经进行了验证以确保它们以此格式输入。但是,现在我想自动在那里留下冒号。我希望他们在文本框中,当用户键入数字时,他们只是跳过冒号。是否有可能为TextBox提供某种格式装饰器?WPF文本框使用默认文本

编辑:我使用WPF 4

回答

0

使用屏蔽文本框如果你想坚持到香草WPF,你可以创建自定义控制添加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; 
     } 
    } 
}