From 6f1346c430ce7ee8a6836ef6e0691f5eef3b0163 Mon Sep 17 00:00:00 2001 From: Daniel Schick Date: Sun, 30 Jun 2024 12:42:41 +0200 Subject: [PATCH] Fixed 4 digit time entry --- src/BreCalClient/DateTimePickerExt.cs | 38 +++++++++------------------ 1 file changed, 12 insertions(+), 26 deletions(-) diff --git a/src/BreCalClient/DateTimePickerExt.cs b/src/BreCalClient/DateTimePickerExt.cs index a86fd47..d3642d4 100644 --- a/src/BreCalClient/DateTimePickerExt.cs +++ b/src/BreCalClient/DateTimePickerExt.cs @@ -9,12 +9,15 @@ namespace BreCalClient 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; + // strip input after caret + string subText = (tb.CaretIndex > 0) ? this.Text[..tb.CaretIndex] : tb.Text; // Range operator instead of Substring(0, tb.CaretIndex) + string text = subText + e.Text; + + // System.Diagnostics.Debug.WriteLine("C:" + this.Text + " E: " + e.Text + " Caret: " + tb.CaretIndex + " Subt: " + subText); + + // 10 char eingabe "am Stück" if (Regex.IsMatch(text, @"^\d{10}")) { e.Handled = true; @@ -23,32 +26,15 @@ namespace BreCalClient tb.SelectedText = ""; } - /* - if (Regex.IsMatch(text, @"^\d{3}")) + // nur die Zeit wird markiert und mit 4 Zahlen befüllt, diese Regel setzt den Doppelpunkt + else if (Regex.IsMatch(text, @"^(\d{2}\.\d{2}\. \d{4} \d{3})")) { e.Handled = true; - tb.Text = Regex.Replace(text, @"(\d{2})(\d)", "$1.$2"); + tb.Text = Regex.Replace(text, @"(\d{2}\.\d{2}\. \d{4} \d{2})(\d)(.*)", "$1:$2"); + // System.Diagnostics.Trace.WriteLine("Replaced: " + tb.Text); tb.CaretIndex = tb.Text.Length; + tb.Select(tb.Text.Length, 0); } - 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; - } - */ } }