我有一个TextBox,我希望我的用户输入格式为XX:XX:XX的时间值。我已经进行了验证以确保它们以此格式输入。但是,现在我想自动在那里留下冒号。我希望他们在文本框中,当用户键入数字时,他们只是跳过冒号。是否有可能为TextBox提供某种格式装饰器?WPF文本框使用默认文本
编辑:我使用WPF 4
我有一个TextBox,我希望我的用户输入格式为XX:XX:XX的时间值。我已经进行了验证以确保它们以此格式输入。但是,现在我想自动在那里留下冒号。我希望他们在文本框中,当用户键入数字时,他们只是跳过冒号。是否有可能为TextBox提供某种格式装饰器?WPF文本框使用默认文本
编辑:我使用WPF 4
使用屏蔽文本框如果你想坚持到香草WPF,你可以创建自定义控制添加3个文本框。
将冒号放在它们之间并处理keydown事件以将焦点从一个文本框传递到另一个文本框,同时仅接受数字。
再一次:使用工具包可能会少一些工作。
使用三个文本框作为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;
}
}
}
看起来不错,但我宁愿留在香草WPF,如果可能的话。我使用的是WPF 4. – s73v3r 2011-02-11 23:43:18