دوستان سلام
يه سوالي پيش اومده برام اينه وقتي كاربر توي ديتا گريد در حال ويرايش ركورده اگه يك داده نامعتبر داد و يا اونرو خالي گذاشت چطوري پيغام خطا رو ايجاد كنم كه خطاي كاربر رو گوشزد كنه
ممنون
Printable View
دوستان سلام
يه سوالي پيش اومده برام اينه وقتي كاربر توي ديتا گريد در حال ويرايش ركورده اگه يك داده نامعتبر داد و يا اونرو خالي گذاشت چطوري پيغام خطا رو ايجاد كنم كه خطاي كاربر رو گوشزد كنه
ممنون
دیتاگرید رویدادی برای چک کردن مقدار سلول در لحظه ویرایش ندارد اما برای جلوگیری از وارد شدن مقداری نامتعارف می توانی از دو رویداد CellBeginEdit و CellEndEdit استفاده نمایی؛ بدین صورت که در هنگامی که کاربر می خواهد شروع به ویرایش سلولی نماید مقدار سلول را در متغیری ذخیره نمایید، هنگامی که کار ویرایش او به پایان رسید و قصد ترک آن سلول را داشت چک کنید اگر مقدار وارد شده با شرط های شما برابر نبود به او پیغام خطایی نمایش دهد و مقدار اولیه سلول را به آن باز گرداند.
چرا دوست عزیز 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
و خیلی رویداد دیگه .دیدی چقدر راحته
دوستان ممنون
يه سوال ديگه
من توي بعضي برنامه ها ديدم وقتي كاربر در حال ويرايش يه ديتاگريد و يه سلوله اگه كاربر مقدار نامعتبر وارد كنه يه آيكن خطر و يا آيكن عبور ممنون قرمز رنگ توي رديف ديتاگريد مي آد كه براي كاربرنشون مي ده اين مقدار نامتعارف يا غير قابل قبوله اين ايكن رو چطوري بيارم
ممنون مي شم
برای انجام این کار می توانی از کنترل ErrorProvider استفاده نمایی.
PrivateSub dgv_CellValidated(ByVal sender AsObject, 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
EndIf
Catch ex As Exception
saadi.Msgbox_show(ex.Message, _
Saadi_MsgBox.Saadi_Msg.button_1.بلی, _
Saadi_MsgBox.Saadi_Msg.Icon_1.خطا, "خطا در محاسبه بستانکار")
EndTry
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
EndIf
Catch ex As Exception
EndTry
EndSub