【发布时间】:2012-01-28 11:04:54
【问题描述】:
我有一个带有文本框的 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);
}
【问题讨论】:
标签: c# regex silverlight