可能重复:
How do I get a TextBox to only accept numeric input in WPF?
以下代码不正确:
private void txtCode_PreviewTextInput(object sender, TextCompositionEventArgs e)
{
e.Handled = !AreAllValidNumericChars(e.Text);
}
private bool AreAllValidNumericChars(string str)
{
foreach (char c in str)
{
if (!Char.IsNumber(c)) return false;
}
return true;
}
和
private void txtCode_PreviewTextInput(object sender, TextCompositionEventArgs e)
{
e.Handled = !AreAllValidNumericChars(e.Text);
}
bool AreAllValidNumericChars(string str)
{
bool ret = true;
if (str == System.Globalization.NumberFormatInfo.CurrentInfo.CurrencyDecimalSeparator |
str == System.Globalization.NumberFormatInfo.CurrentInfo.CurrencyGroupSeparator |
str == System.Globalization.NumberFormatInfo.CurrentInfo.CurrencySymbol |
str == System.Globalization.NumberFormatInfo.CurrentInfo.NegativeSign |
str == System.Globalization.NumberFormatInfo.CurrentInfo.NegativeInfinitySymbol |
str == System.Globalization.NumberFormatInfo.CurrentInfo.NumberDecimalSeparator |
str == System.Globalization.NumberFormatInfo.CurrentInfo.NumberGroupSeparator |
str == System.Globalization.NumberFormatInfo.CurrentInfo.PercentDecimalSeparator |
str == System.Globalization.NumberFormatInfo.CurrentInfo.PercentGroupSeparator |
str == System.Globalization.NumberFormatInfo.CurrentInfo.PercentSymbol |
str == System.Globalization.NumberFormatInfo.CurrentInfo.PerMilleSymbol |
str == System.Globalization.NumberFormatInfo.CurrentInfo.PositiveInfinitySymbol |
str == System.Globalization.NumberFormatInfo.CurrentInfo.PositiveSign)
return ret;
int l = str.Length;
for (int i = 0; i < l; i++)
{
char ch = str[i];
ret &= Char.IsDigit(ch);
}
return ret;
}
和
private override void txtCode_PreviewTextInput(object sender, TextCompositionEventArgs e)
{
char c = e.Text.ToCharArray().First();
e.Handled = !(char.IsNumber(c) || char.IsControl(c));
}
和.....
问题:Ctrl + V复制/粘贴
什么是正确的代码?
答案 0 :(得分:-1)
这是我用于仅限数字文本框的代码,并且工作正常。
private void textBox1_PreviewTextInput(object sender, TextCompositionEventArgs e)
{
e.Handled = onlyNumeric(e.Text);
}
public static bool onlyNumeric(string text)
{
Regex regex = new Regex("^[0-9]*$"); //regex that allows numeric input only
return !regex.IsMatch(text); //
}