我在C#中有一个文本框,用户只能输入十进制数字(负数和正数)。
我不想使用MaskedText Box,我宁愿使用keypress事件来验证输入。
我怎样才能做到这一点?
谢谢,
********* ********* EDIT ++
private void mytextbox_KeyPress(object sender, KeyPressEventArgs e)
{
if (((e.KeyChar < 48 || e.KeyChar > 57) && e.KeyChar != 8 && e.KeyChar != '.' &&e.KeyChar!='-'))
{
e.Handled = true;
}
if (e.KeyChar == '.')
{
if ((sender as TextBox).Text.IndexOf(e.KeyChar) != -1)
e.Handled = true;
}
if (e.KeyChar=='-' && (sender as TextBox).SelectionStart > 0)
{
e.Handled = true;
}
}
答案 0 :(得分:0)
各种数字类型的TryParse将告诉您输入是否有效。例如,如果您想使用double
:
private void OnKeyPress(...)
{
double parsedValue = 0;
if (double.TryParse(MyTextBox.Text, out parsedValue)
{
//Valid number entered, value in parsedValue
}
else
{
//Invalid number entered
}
}
这个答案还有很多其他方法可以帮助你:How do I make a textbox that only accepts numbers?