PDA

View Full Version : سوال: چگونه مشخص کنیم که در یک ستون دیتاگرید فقط بتوان عدد نوشت ؟



poorman
چهارشنبه 02 مرداد 1392, 18:23 عصر
سلام دوستان

من میخوام به کاربر اجازه بدم که از طریق دیتاگرید اطلاعات دیتابیس رو آپدیت کنه
حالا مشکلم اینجاس که چند تا از فیلدهام فقط باید عدد باشه ، اما توی ادیت دیتاگرید میتونه هر کاراکتری وارد کنه
هرچی به مغزم فشار اوردم و راه حل های مختلف رو امتحان کردم نتونستم
کسی میتونه کمک کنه ؟

roxe77
پنج شنبه 03 مرداد 1392, 02:42 صبح
روی رویداد keydown و keypress فرم کارکن و از طریق اون جلوش رو بگیر دقت کن فرم نه گریدویو

poorman
جمعه 04 مرداد 1392, 06:05 صبح
روی رویداد keydown و keypress فرم کارکن و از طریق اون جلوش رو بگیر دقت کن فرم نه گریدویو

اصلا و به هیچ عنوان نمیشه !!! چون وقتی focus روی دیتاگرید هست کلا رویدادهای فرم کار نمیکنه دیگه
رویداد keypress دیتاگرید هم وقتی یک سلول شروع به ادیت شدن میکنه ، دیگه کار نمیکنه

بنابراین باید تمام انرژیم رو بذارم روی رویداد CellBeginEdit دیتاگرید ...
اما مشکل اینجاس که نمیتونم توی این رویداد کاراکترهایی که کاربر وارد میکنه رو کنترل کنم

vb341
جمعه 04 مرداد 1392, 12:21 عصر
من با این کد جواب گرفتم


Private Sub DataGridView1_CellValidating(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellValidatingEve ntArgs) Handles DataGridView1.CellValidating


Dim pdate As New ShamsiDLL.ClassShamsi
Select Case e.ColumnIndex
Case 0 ', 5
If IsNumeric(e.FormattedValue) = False Then
MessageBox.Show("فقط عدد وارد کنید", "ثبت اطلاعات", MessageBoxButtons.OK, MessageBoxIcon.Information)
e.Cancel = True
'Me.DataGridView1.Rows(e.RowIndex).Cells(e.ColumnI ndex).ErrorText = "مقدار را بصورت عددی وارد کنید"

End If
'Case 6
' If pdate.IsShamsi(e.FormattedValue) = False Then
' MessageBox.Show("تاریخ صحیح نمی باشد", "ثبت اطلاعات", MessageBoxButtons.OK, MessageBoxIcon.Information)
' e.Cancel = True
' End If
End Select

End Sub

shadi khanum
شنبه 05 مرداد 1392, 08:39 صبح
دوست عزیز مگه میشه رویداد keyPress گرید کار نکنه؟ من خودم همین کارو میکنم. الان هم تو پروژه ای که جلومه دقیقا برای اینکه عدد وارد بشه فقط تو keyPress گرید جلوشو گرفتم. توی keyPress گرید کد بنویس، حتما کار میکنه