PDA

View Full Version : سوال: اشکال این کد - کنترل ورود عدد



hamid30sharp
شنبه 06 دی 1393, 22:09 عصر
با سلام
از این کد برای کنترل ورود مقادیر استفاده می کنم تما در عدد های 11 رقمی به بالا کار نمی کنه - احتمالا خطا از نوع int باشه .
در text change فراخوانی می کنم .

private void validateTextInteger(object sender, EventArgs e)
{

Exception X = new Exception();

TextBox T = (TextBox)sender;

T.Text = T.Text.Trim();
try
{
if (T.Text != "-")
{
int x = int.Parse(T.Text);
}
}
catch (Exception)
{
try
{
int CursorIndex = T.SelectionStart - 1;
T.Text = T.Text.Remove(CursorIndex, 1);

//Align Cursor to same index
T.SelectionStart = CursorIndex;
T.SelectionLength = 0;
}
catch (Exception) { }

}
}

aminmousavi
شنبه 06 دی 1393, 23:19 عصر
سلام دوست عزیز .
بله برای اینکه از int32 استفاده کردین . اما دلیلی نداره از این روش استفاده کنین .
اگر میخواین فقط عدد وارد بشه کافیه از کد زیر استفاده کنین :

private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
{
if (!((e.KeyChar <= '9' && e.KeyChar >= '0') || e.KeyChar == (char)8))
{
e.Handled = true;
}
}

hamid30sharp
یک شنبه 07 دی 1393, 11:57 صبح
سلام دوست عزیز .
بله برای اینکه از int32 استفاده کردین . اما دلیلی نداره از این روش استفاده کنین .
اگر میخواین فقط عدد وارد بشه کافیه از کد زیر استفاده کنین :

private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
{
if (!((e.KeyChar <= '9' && e.KeyChar >= '0') || e.KeyChar == (char)8))
{
e.Handled = true;
}
}


به این خاطر از این کد استفاده کردم که اگر زبان بغییر انگلیسی باشه (مثلا عربی) شماره ها رو به صورت غیر انگلیسی وارد می کنه و بعدا در جمع کردن دیتا گرید دچار خطا می شن.