我有一个TextBox,我希望我的用户输入格式为XX:XX:XX的时间值。我已经进行了验证,以确保以这种格式输入。但是,现在我想自动拥有冒号。我希望它们在文本框中,并且当用户键入数字时,它们只是跳过冒号。是否可以为TextBox设置某种格式装饰器?
编辑:我正在使用WPF 4。
答案 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;
}
}
}