Лучший вариант - запретить пользователю вводить недопустимые символы. Это можно сделать с помощью регулярных выражений в событии TextChanged. Вы можете пойти с разрешающей или ограничительной моделью.
Обязательно добавьте необходимый оператор using:
using System.Text.RegularExpressions;
В разрешающей модели разрешены все символы, кроме тех, которые специально запрещены:
private Regex rxForbidden = new Regex(@"[&$%£]", RegexOptions.IgnoreCase);
private void txtInput_TextChanged(object sender, TextChangedEventArgs e)
{
txtInput.Text = rxForbidden.Replace(txtInput.Text, "");
txtInput.SelectionStart = txtInput.Text.Length;
}
В модели с ограничениями разрешены только определенные символы:
private Regex rxForbidden = new Regex(@"[^0-9a-z]", RegexOptions.IgnoreCase);
private void txtInput_TextChanged(object sender, TextChangedEventArgs e)
{
txtInput.Text = rxForbidden.Replace(txtInput.Text, "");
txtInput.SelectionStart = txtInput.Text.Length;
}
Как правило, ограничивающую модель будет проще поддерживать (вам не придется возвращаться и добавлять дополнительные запрещенные символы по мере их обнаружения), но это действительно зависит от вашего приложения. В любом случае любое использование запрещенных символов будет полностью игнорироваться, как если бы пользователь не нажал эту клавишу.
Как примечание, у вашего textbox
должно быть InputScope
, установленное на Maps
.