PDA

View Full Version : توليد خطا در هنگام ورود داده نامعتبر در DataGridView1



sh2007
دوشنبه 25 آبان 1388, 13:21 عصر
دوستان سلام
يه سوالي پيش اومده برام اينه وقتي كاربر توي ديتا گريد در حال ويرايش ركورده اگه يك داده نامعتبر داد و يا اونرو خالي گذاشت چطوري پيغام خطا رو ايجاد كنم كه خطاي كاربر رو گوشزد كنه
ممنون

Mani_rf
دوشنبه 25 آبان 1388, 14:35 عصر
دیتاگرید رویدادی برای چک کردن مقدار سلول در لحظه ویرایش ندارد اما برای جلوگیری از وارد شدن مقداری نامتعارف می توانی از دو رویداد CellBeginEdit و CellEndEdit استفاده نمایی؛ بدین صورت که در هنگامی که کاربر می خواهد شروع به ویرایش سلولی نماید مقدار سلول را در متغیری ذخیره نمایید، هنگامی که کار ویرایش او به پایان رسید و قصد ترک آن سلول را داشت چک کنید اگر مقدار وارد شده با شرط های شما برابر نبود به او پیغام خطایی نمایش دهد و مقدار اولیه سلول را به آن باز گرداند.

DoDoklak
دوشنبه 25 آبان 1388, 15:34 عصر
دیتاگرید رویدادی برای چک کردن مقدار سلول در لحظه ویرایش ندارد

چرا دوست عزیز DGV رو هم میتونی کنترل کنی

ابتدا یک شی مانند زیر در بالای فرم تعریف کن


FriendWithEvents txt_dgv AsNew DataGridViewTextBoxEditingControl


بعد در رویداد EditingControlShowing مربوط به DGV این کد را قرار بده



PrivateSub DGV_EditingControlShowing(ByVal sender AsObject, ByVal e As System.Windows.Forms.DataGridViewEditingControlSho wingEventArgs) Handles DGV1.EditingControlShowing

txt_dgv = e.Control

EndSub


حالا دیگه همه چی مثل یک Text box ساده اماده کاره

مثلا رویداد Key Down


PrivateSub txt_dgv_KeyDown(ByVal sender AsObject, ByVal e As System.Windows.Forms.KeyEventArgs) Handles txt_dgv.KeyDown
کد مربوطه برای بررسی


EndSub

EndSub


یا KeyPress



PrivateSub txt_dgv_KeyPress(ByVal sender AsObject, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles txt_dgv.KeyPress

دستورات مربوطه
End Sub


و خیلی رویداد دیگه .دیدی چقدر راحته

sh2007
سه شنبه 26 آبان 1388, 09:05 صبح
دوستان ممنون
يه سوال ديگه
من توي بعضي برنامه ها ديدم وقتي كاربر در حال ويرايش يه ديتاگريد و يه سلوله اگه كاربر مقدار نامعتبر وارد كنه يه آيكن خطر و يا آيكن عبور ممنون قرمز رنگ توي رديف ديتاگريد مي آد كه براي كاربرنشون مي ده اين مقدار نامتعارف يا غير قابل قبوله اين ايكن رو چطوري بيارم

ممنون مي شم

Mani_rf
سه شنبه 26 آبان 1388, 17:01 عصر
برای انجام این کار می توانی از کنترل ErrorProvider استفاده نمایی.

saadi2
دوشنبه 16 آذر 1388, 02:16 صبح
Private Sub dgv_CellValidated(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles Dgv.CellValidated
Try
Try
If Dgv.Columns(e.ColumnIndex).Name = "fi" Then
Dgv.Item("bes", e.RowIndex).Value = _
Dgv.Item("wazn", e.RowIndex).Value * _
Dgv.Item("fi", e.RowIndex).Value
End If
Catch ex As Exception
saadi.Msgbox_show(ex.Message, _
Saadi_MsgBox.Saadi_Msg.button_1.بلی, _
Saadi_MsgBox.Saadi_Msg.Icon_1.خطا, "خطا در محاسبه بستانکار")
End Try
If Dgv.Columns(e.ColumnIndex).Name = "wazn" Then
Dgv.Item("bes", e.RowIndex).Value = _
Dgv.Item("wazn", e.RowIndex).Value * _
Dgv.Item("fi", e.RowIndex).Value
End If
Catch ex As Exception

End Try
End Sub