Add search input delay of 200ms

This commit is contained in:
2023-07-14 13:09:24 +02:00
parent cb2534d678
commit c0e584143e
3 changed files with 23 additions and 0 deletions

View File

@ -7,6 +7,7 @@ using System.Linq;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Threading;
using Xceed.Wpf.Toolkit;
namespace Elwig.Windows {
@ -225,6 +226,22 @@ namespace Elwig.Windows {
UpdateComboBox(ortInput);
}
protected static void InitializeDelayTimer(TextBox tb, Action<object, TextChangedEventArgs> handler) {
var timer = new DispatcherTimer {
Interval = TimeSpan.FromMilliseconds(250)
};
timer.Tick += (object? sender, EventArgs evt) => {
timer.Stop();
var (oSender, oEvent) = ((object, TextChangedEventArgs))timer.Tag;
handler(oSender, oEvent);
};
tb.TextChanged += (object sender, TextChangedEventArgs evt) => {
timer.Stop();
timer.Tag = (sender, evt);
timer.Start();
};
}
protected bool InputTextChanged(TextBox input, Func<TextBox, bool, ValidationResult> checker) {
return InputTextChanged(input, (tb, required, ctx) => checker(tb, required));
}

View File

@ -43,6 +43,9 @@ namespace Elwig.Windows {
Timer = new DispatcherTimer();
Timer.Tick += new EventHandler(OnSecondPassed);
Timer.Interval = new TimeSpan(0, 0, 1);
InitializeDelayTimer(SearchInput, SearchInput_TextChanged);
SearchInput.TextChanged -= SearchInput_TextChanged;
}
public DeliveryAdminWindow(bool receipt) : this() {

View File

@ -50,6 +50,9 @@ namespace Elwig.Windows {
(PhoneNr9TypeInput, PhoneNr9Input, PhoneNr9CommentInput),
};
foreach (var input in PhoneNrInputs) input.Item1.ItemsSource = PhoneNrTypes;
InitializeDelayTimer(SearchInput, SearchInput_TextChanged);
SearchInput.TextChanged -= SearchInput_TextChanged;
}
private void Window_Loaded(object sender, RoutedEventArgs evt) {