PDA

View Full Version : سوال: اعتبار سنجی مقدار واردشده توسط کاربر در DataGridView



Sociant
جمعه 16 مرداد 1388, 00:59 صبح
با سلام
من تو برنامه ام یک DataGridView دارم که در ابتدای برنامه اون رو با استفاده از DataSource پر میکنم
این امکان رو واسه کاربر گذاشتم که بتونه سطر جدید وارد کنه و در DataGridView مقدار وارد کنه

مشکلی که دارم اینه که میخوام وقتی کاربر مقداری رو در سلول مشخصی وارد کرد بلافاصله بعد از خارج شدن فوکوس از اون سلول ، مقدار وارد شده کاربر از نظر عددی بودن چک بشه و درضورتی که درست بود بتونه مقدار سلول های دیگه رو وارد کنه ، در غیر اینصورت فوکوس روی همون سلول بمونه

با استفاده از این کدها این کار رو انجام دادم



private void dataGridView1_CellValidating(object sender, DataGridViewCellValidatingEventArgs e)
{
if (e.ColumnIndex == 0)
{
int parsed;
if (!int.TryParse((string)e.FormattedValue, out parsed))
{
dataGridView1.Rows[e.RowIndex].ErrorText = "Enter namerical value";
e.Cancel = true;
}
}
}

private void dataGridView1_CellEndEdit(object sender, DataGridViewCellEventArgs e)
{
dataGridView1.Rows[e.RowIndex].ErrorText = "";
}



مسکلم رو حل کرد ولی اگه کاربر مقدار عددی تو این سلول وارد نکنه دیگه هیچ قسمتی از برنامه قادر به گرفتن فوکوس نیست و حتی دکمه Close برنامه هم از کار می افته!

Unknownlive
جمعه 16 مرداد 1388, 09:46 صبح
شما برای اطلاع دادن دقیق به کاربر از خطای خود از کامپوننت Error Provider استفاده کنید !!!

Sociant
جمعه 16 مرداد 1388, 10:15 صبح
آخه بحث سر اینه که نمیخوام کاربر تا مقدار صحیح تو این سلول وارد نکرده بتونه به سلول دیگه ای بره!
در عین حال میخوام این محدودیت فقط تو خود DataGridView باشه نه کل فرم. یعنی اگه جای دیگه ای از فرم خواست کاری انجام بده ، یا حتی فرم رو ببنده بتونه. الان حتی Esc رو هم که میزنه از مد ویرایش خارج نمیشه.

این کاری که کردم راهنمایی خود MSDN بود

Sociant
جمعه 16 مرداد 1388, 22:36 عصر
دوستان عزیز واقعا شرمنده کردین که اینهمه راهنماییم کردین!:بامزه:
اگه راهنمایی های شما نبود خودم نمی تونستم جواب سوالمو پیدا کنم

راه حل:
تغییر خاصیت AutoValidate فرم به EnableAllowFocusChange