C# 仅使用十进制数字(正数和负数)验证文本框

C# 仅使用十进制数字(正数和负数)验证文本框,c#,textbox,decimal,C#,Textbox,Decimal,我在C#中有一个文本框,用户只能输入十进制数字(负数和正数) 我不想使用maskedtextbox,我宁愿使用keypress事件来验证输入 我怎样才能做到这一点 谢谢 **********编辑**********++ private void mytextbox_KeyPress(object sender, KeyPressEventArgs e) { if (((e.KeyChar < 48 || e.KeyChar > 57) && e

我在C#中有一个文本框,用户只能输入十进制数字(负数和正数)

我不想使用maskedtextbox,我宁愿使用keypress事件来验证输入

我怎样才能做到这一点

谢谢

**********编辑**********++

 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;
          }
}
private void mytextbox\u按键(对象发送者,按键事件参数e)
{
如果((e.KeyChar<48 | | e.KeyChar>57)和&e.KeyChar!=8和&e.KeyChar!='.'和&e.KeyChar!='-'))
{
e、 已处理=正确;
}
如果(e.KeyChar=='。)
{
if((发送者作为文本框).Text.IndexOf(e.KeyChar)!=-1)
e、 已处理=正确;
}
如果(e.KeyChar=='-'&&&(发件人为文本框)。选择开始>0)
{
e、 已处理=正确;
}
}

各种数字类型的TryParse将告诉您输入是否有效。例如,如果您想使用双倍密码:

private void OnKeyPress(...)
{
   double parsedValue = 0;
   if (double.TryParse(MyTextBox.Text, out parsedValue)
   {
       //Valid number entered, value in parsedValue
   }
   else
   {
       //Invalid number entered
   }
}
这个答案还有很多其他的解释方法:

你试过这个吗?