У меня есть приложение Silverlight с текстовым полем, ввод которого я хочу ограничить только десятичными числами. При поиске в Интернете я наткнулся на следующее возможное решение (любопытно, что в разных местах разные люди утверждают, что они являются авторами одних и тех же строк кода)
Кажется, он работает хорошо, за исключением того, что после ввода хотя бы 1 цифры он позволяет вводить букву «d» в верхнем или нижнем регистре, я не могу понять, почему это так, и, следовательно, не могу понять, как предотвратить это. Может кто-нибудь, пожалуйста, предоставьте решение. Большое спасибо.
private void Unit_KeyDown(object sender, KeyEventArgs e)
{
if (e.Key == Key.Tab)
{
}
var thisKeyStr = "";
if (e.PlatformKeyCode == 190 || e.PlatformKeyCode == 110)
{
thisKeyStr = ".";
}
else
{
thisKeyStr = e.Key.ToString().Replace("D", "").Replace("NumPad", "");
}
var s = (sender as TextBox).Text + thisKeyStr;
var rStr = "^[0-9]+[.]?[0-9]*$";
var r = new Regex(rStr, RegexOptions.IgnoreCase);
e.Handled = !r.IsMatch(s);
}