TextBox ای که فقط عدد می پذیرد، چه صحیح، چه اعشاری
با سلام
من از قطعه کد زیر برای کنترل TextBox استفاده می کنم. با این روش جلوی تمامی خطاهای کاربر گرفته می شود. تنها ورودی قابل قبول است که عدد صحیح یا اعشاری باشد.
این کد کامل است یا می شود آن را بهینه تر کرد؟
کد:
private void textBox_Centigrade_KeyPress(object sender, KeyPressEventArgs e) {
if (char.IsDigit(e.KeyChar))
{
digit++;
}
else
{
if (e.KeyChar.ToString() == ".")
{
dot++;
if (digit == 0)
{
Flag = false;
}
else
{
Flag = true;
}
}
else
{
Flag = false;
}
}
if(digit == 0)
{
Flag = false;
}
if(dot > 1)
{
Flag = false;
}
if (dot==0 && digit > 0)
{
Flag = true;
}
}
ولی وقتی از کد زیر استفاده می کنم، خیلی از ورودی های اشتباه کاربر را در نظر نمیگیرد و تولید خطای سیستمی میکند.
کد:
if (!char.IsDigit(e.KeyChar) && e.KeyChar.ToString()!= ".") {
MessageBox.Show("قالب ورودی صحیح نیست.لطفاً عدد صحیح یا اعشاری وارد کنید", "خطا", MessageBoxButtons.OK, MessageBoxIcon.Error);
Flag = false;
}
else
{
Flag = true;
}