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
Daniel Schick 570a227b78 Simplified input text filtering:
If user enters 10 digits, then these are split up for the date
2024-07-01 13:22:04 +02:00

56 lines
1.9 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{10}"))
{
e.Handled = true;
tb.Text = Regex.Replace(text, @"(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})", "$1.$2.20$3 $4:$5");
tb.CaretIndex = tb.Text.Length;
tb.SelectedText = "";
}
/*
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;
}
*/
}
}
}