WPF文本框使用默认文本

时间:2011-02-11 23:29:38

标签: wpf textbox user-input string-formatting

我有一个TextBox,我希望我的用户输入格式为XX:XX:XX的时间值。我已经进行了验证,以确保以这种格式输入。但是,现在我想自动拥有冒号。我希望它们在文本框中,并且当用户键入数字时,它们只是跳过冒号。是否可以为TextBox设置某种格式装饰器?

编辑:我正在使用WPF 4。

3 个答案:

答案 0 :(得分:4)

答案 1 :(得分:0)

如果你想坚持使用vanilla WPF,你可以创建一个自定义控件并添加3个文本框。

将冒号放在它们之间并处理keydown事件以将焦点从一个文本框传递到另一个文本框,同时仅接受数字。

再次:使用工具包可能会减少工作量。

答案 2 :(得分:0)

使用三个TextBox作为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;
        }
    }
}