45 lines
1.6 KiB
C#
45 lines
1.6 KiB
C#
using System.Text.RegularExpressions;
|
|
using System.Windows.Input;
|
|
using Xceed.Wpf.Toolkit;
|
|
|
|
namespace BreCalClient
|
|
{
|
|
public class DateTimePickerExt : DateTimePicker
|
|
{
|
|
protected override void OnPreviewTextInput(TextCompositionEventArgs e)
|
|
{
|
|
base.OnPreviewTextInput(e);
|
|
|
|
// Die vom Agenten "vorgeschlagene" Zeit könnte auch der Watermark sein?
|
|
|
|
string text = this.Text + e.Text;
|
|
if (this.Template.FindName("PART_TextBox", this) is not WatermarkTextBox tb) return;
|
|
|
|
if (Regex.IsMatch(text, @"^\d{3}"))
|
|
{
|
|
e.Handled = true;
|
|
tb.Text = Regex.Replace(text, @"(\d{2})(\d)", "$1.$2");
|
|
tb.CaretIndex = tb.Text.Length;
|
|
}
|
|
else if (Regex.IsMatch(text, @"^(\d{2}\.\d{3})"))
|
|
{
|
|
e.Handled = true;
|
|
tb.Text = Regex.Replace(text, @"^(\d{2}\.\d{2})(\d)", "$1.$2");
|
|
tb.CaretIndex = tb.Text.Length;
|
|
}
|
|
else if (Regex.IsMatch(text, @"^(\d{2}\.\d{2}\.\d{2} \d{3})"))
|
|
{
|
|
e.Handled = true;
|
|
tb.Text = Regex.Replace(text, @"(\d{2}\.\d{2}\.\d{2} \d{2})(\d)", "$1:$2");
|
|
tb.CaretIndex = tb.Text.Length;
|
|
}
|
|
else if (Regex.IsMatch(text, @"^(\d{2}\.\d{2}\.\d{4} \d{3})"))
|
|
{
|
|
e.Handled = true;
|
|
tb.Text = Regex.Replace(text, @"(\d{2}\.\d{2}\.\d{4} \d{2})(\d)", "$1:$2");
|
|
tb.CaretIndex = tb.Text.Length;
|
|
}
|
|
}
|
|
}
|
|
}
|