Tworzę aplikację UWP, która ma różne pola tekstowe do wprowadzania liczb. Aby upewnić się, że można wprowadzać tylko liczby, używam zdarzenia TextChanging. Niestety nie mogę znaleźć żadnej dokumentacji dotyczącej szczegółowego korzystania z funkcji TextChanging w celu zignorowania błędnych danych wejściowych.Używanie UWP TextBox.TextChanging do ignorowania niewłaściwych danych
roztworu roboczego dla jednego TextBox jest następujący:
string oldText;
private void tbInput_TextChanging(TextBox sender, TextBoxTextChangingEventArgs args)
{
double temp;
if (double.TryParse(sender.Text, out temp) || sender.Text == "")
oldText = sender.Text;
else
{
int pos = sender.SelectionStart - 1;
sender.Text = oldText;
sender.SelectionStart = pos;
}
}
Stosując to rozwiązanie byłoby muszę string oldText
dla każdego TextBox i albo też funkcja TextChanging dla każdego z nich lub dużo więcej kodu wewnątrz funkcji .
Czy istnieje prosty sposób na zignorowanie "niewłaściwych" danych wejściowych w zdarzeniu TextBox.TextChanging?
Czy znasz * InputScopes *? Możesz również rzucić okiem [pod tą odpowiedzią] (http://stackoverflow.com/a/21193669/2681948) - może ci pomoże. – Romasz
Już ustawiłem _InputScope_ na '" Number "', ale na komputerze wciąż mogę wpisywać litery ... Twój link wygląda dobrze, spróbuję w ten sposób. – daengl
Prawdopodobnie istnieje kilka sposobów na obsłużenie tego zadania. Prawdopodobnie będziesz musiał obsłużyć przypadek, gdy użytkownik skopiuje i wklei tekst. – Romasz