PDA

View Full Version : من موقع نوشتن در ديتاگريد براي ستون هايي كه اونا رو از نوع int تعريف كردم به يه مشكل برمي خورم،



rahil_2008
سه شنبه 17 شهریور 1388, 17:59 عصر
سلام دوستان
من موقع نوشتن در ديتاگريد براي ستون هايي كه اونا رو از نوع int تعريف كردم به يه مشكل برمي خورم،
به اينصورت كه اگر حواس كاربر نباشه و مثلا در ستون شماره شناسنامه كه از نوع int هست حروف الفبا وارد كنه
يه پيام خطاي sql اي به نمايش در مي آد. البته من از try/ catch هم براي جلوگيري از اين پيام خطا استفاده كردم
ولي جواب نگرفتم و دوباره همون پيام خطا رو براي كاربر نمايش داد. (من براي زيبايي كار و اينكه كاربرو با خطاهاي sql اي در گير نكنم
از try/catch استفاده كردم ولي موفق نشدم).
لطفا راهنماييم كنيد

mahdi_7610
سه شنبه 17 شهریور 1388, 21:45 عصر
شما میتونید textBox را محدود به وارد کردن عدد بکنید . یعنی اصلا کارکتر قبول نکنه .


private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
{
{
if (!char.IsControl(e.KeyChar) && !char.IsDigit(e.KeyChar))
{
e.Handled = true;
}
}
}

rahil_2008
سه شنبه 17 شهریور 1388, 22:44 عصر
دوست عزيز از راهنماييتون ممنون ولي من اطلاعاتو تو textbox وارد نمي كنم مستقيما تو خود ديتاگريد مي نويسم

Mohsen229266
چهارشنبه 18 شهریور 1388, 12:18 عصر
سلام
اول یه رویداد برای فشره شدن کلید ها (KeyPress)برای دیتاگرید بنویس بعد همون کدی که دوستمون گذاشتن رو در رویدادی که تعریف کردید بنویسید
مثل این

privatevoid dataGridView1_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e)
{
e.Control.KeyPress += DataGridKeyPress;
}
privatevoid DataGridKeyPress(object sender, KeyPressEventArgs e)
{
if (!char.IsNumber(e.KeyChar))
e.Handled = true;
}

rahil_2008
چهارشنبه 18 شهریور 1388, 15:07 عصر
خيلي ممنون، مشكلم از اين راهي كه گفتيد حل شد