اعتبار سنجی مقدار واردشده توسط کاربر در DataGridView
با سلام
من تو برنامه ام یک 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 برنامه هم از کار می افته!
نقل قول: اعتبار سنجی مقدار واردشده توسط کاربر در DataGridView
شما برای اطلاع دادن دقیق به کاربر از خطای خود از کامپوننت Error Provider استفاده کنید !!!
نقل قول: اعتبار سنجی مقدار واردشده توسط کاربر در DataGridView
آخه بحث سر اینه که نمیخوام کاربر تا مقدار صحیح تو این سلول وارد نکرده بتونه به سلول دیگه ای بره!
در عین حال میخوام این محدودیت فقط تو خود DataGridView باشه نه کل فرم. یعنی اگه جای دیگه ای از فرم خواست کاری انجام بده ، یا حتی فرم رو ببنده بتونه. الان حتی Esc رو هم که میزنه از مد ویرایش خارج نمیشه.
این کاری که کردم راهنمایی خود MSDN بود
نقل قول: اعتبار سنجی مقدار واردشده توسط کاربر در DataGridView
دوستان عزیز واقعا شرمنده کردین که اینهمه راهنماییم کردین!:بامزه:
اگه راهنمایی های شما نبود خودم نمی تونستم جواب سوالمو پیدا کنم
راه حل:
تغییر خاصیت AutoValidate فرم به EnableAllowFocusChange