This repository has been archived on 2025-02-17. You can view files and clone it, but cannot push or open issues or pull requests.
BreCal/src/BreCalClient/DateTimePickerExt.cs

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;
}
}
}
}