PDA

View Full Version : سوال: عددي يا حروفي كردن سلولهاي ديتا گريد (فوري)



bahar2008
دوشنبه 05 اسفند 1387, 12:51 عصر
سلام دوستان خوبم
من ديتا گريدي دارم كه يك ستونش بايد كلمه وارد بشه و در 3 ستون ديگر عدد وارد بشه ..... چه شرطي بايد براي سلولها يا ستون ها بزارم كه اگر كاربر به جاي عدد ، حروف وارد كرد پيغام خطايي كه خودم مايل هستم رو نشون بده ..... در چه رويدادي از ديتا گريد بايد اين شرط رو قرار بدم؟ چون الان كه هيچ شرطي نگذاشتم وقتي اشتباهي وارد مي كنم يك پيغام خطاي خيلي بزرگ و طولاني صادر مي كنه براي كاربر :ناراحت:

anooshiran
دوشنبه 05 اسفند 1387, 13:27 عصر
سلام دوست عزيز

به لينك زير مراجعه كن

http://barnamenevis.org/forum/showthread.php?t=148555

يك پروژه به نام DataGridView_NumericColumn در آنجا UpLoad كرده ام. كه مشكل شما را حل ميكند.

البته اين datagridview بدون جدول است. اگر با datatable كار مي كني به ِDataSource يك جدول بايند كن. حتما جواب مي گيري ولي اگر مشكلي داشت بگو تا رفعش كنم.

mostafaaa
دوشنبه 05 اسفند 1387, 13:31 عصر
سلام دوست من
با این کد که براتون میزارم اصلا به کاربر اجازه داده نمیشه توی ستون بجز عدد چیز دیگری وارد کنه !

Private WithEvents ctrl As Control
Private Sub DataGridView1_EditingControlShowing(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewEditingControlSho wingEventArgs) Handles DataGridView1.EditingControlShowing
If DirectCast(sender, DataGridView).CurrentCell.ColumnIndex = 0 Then
ctrl = e.Control : Else
ctrl = Nothing
End If
End Sub
Private Sub ctrl_TextChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles ctrl.TextChanged
If Not IsNumeric(DirectCast(sender, Control).Text) Then
SendKeys.Send("{BackSpace}")
End If
End Sub

anooshiran
دوشنبه 05 اسفند 1387, 13:39 عصر
سلام مجدد

دوست عزيز در تاپيكت ديدم كه پيام خطا هم در صورت اشتباه ميخواهي



Private Sub text_chang(ByVal sender As Object, ByVal e As EventArgs)
Try
Dim nfi As New Globalization.NumberFormatInfo()
sender.Text = Long.Parse(sender.Text, Globalization.NumberStyles.Number).ToString("n0", nfi)
sender.[Select](sender.Text.Length, 0)
Catch
MsgBox("در اين ستون فقط مقادير عددي قابل قبول است", , "خطا در ورود اطلاعات")
sender.Text = ""
End Try
End Sub


sub فوق را جايگزين sub موجود در پروژه كن كه پيام خطا هم داشته باشي ، در ضمن اين ماژول Seperator هم براي جدا كردن اعدا ميگذارد . اگر seperator را نمي خواهي "n0" را تبديل به "" كن

حال اگر مي خواهي در يك cell فقط حروف بزني و عدد نگيره. اون هم راه ديگري داره. اگر نياز داشتي بگو.