PDA

View Full Version : سه رقم کردن اعداد datagridview موقع تایپ-نه موقع ثبت



mz6488
یک شنبه 17 آبان 1394, 18:29 عصر
سلام.من میخوام کاربر وقتی عدد رو داخل گرید تایپ میکنه به صورت سه رقم سه رقم نشون بده.ولی هر کاری کردم نتونستم ایونتش رو پیدا کنم.

MortezaZandi
دوشنبه 18 آبان 1394, 02:51 صبح
سلام
برای کنترل وردی به سلولهای دیتاگرید ، رویدادی وجود ندارد که هنگام ورود داده مانند TextChanged یا امثال این عمل کند.

اما از آنجایی که هر سلول گراید خود یک کنترل Textbox هست شما میتوانید برای رویداد داخلی این کنترل ها کد بنویسید:
کد زیر به رویداد KeyUp سلول گراید دسترسی پیدا میکند و سپس داده های ورودی را به کمک توابع دیگر فرمت میکند.

این کد به زبان VB است:





Private Sub DataGridView1_EditingControlShowing(sender As Object, e As DataGridViewEditingControlShowingEventArgs) Handles DataGridView1.EditingControlShowing

If DataGridView1.CurrentCell.ColumnIndex = 0 Then ' Sotoone mowrede nazar
Dim txt As TextBox = e.Control
If IsNothing(txt) = False Then
AddHandler txt.KeyUp, AddressOf OnKeyUPEvent
End If
End If
End Sub


Private Sub OnKeyUPEvent(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs)
PoolText(sender)
End Sub


Private Function EeasyMoney_(ByVal RawMoney As String) As String
Dim _strTemp As String = ""
Dim _lenght As Integer = 0
RawMoney = RawMoney.Replace(",", "")
RawMoney = StrReverse(RawMoney)
For i = 0 To RawMoney.Length - 1
_strTemp &= RawMoney.Substring(i, 1)
_lenght += 1
If _lenght = 3 And i <> RawMoney.Length - 1 Then
_lenght = 0
_strTemp &= ","
End If
Next
_strTemp = StrReverse(_strTemp)
Return _strTemp
End Function


Public Sub PoolText(ByRef Obj As Object)
Try
Obj.text = EeasyMoney_(Obj.text)
Obj.focus()
Obj.SelectionStart = Strings.Len(Obj.text)
Catch ex As Exception
End Try
End Sub






همان طور که نوشتم ، برای این کار حتما از رویداد KeyUp استفاده کن.

امید وارم مفید باشه