When writing a project function point today, you may encounter a problem. The datagridviewtextboxcolumn can only be formatted as XXXXX. XX decimal places.
I tried a lot of methods, but I could only verify them after entering them. Then I searched the internet and found a good method. After modification, it was good. Now I want to convert it to VB. net Language, recorded below:
Private _ editcell as datagridviewtextboxeditingcontrol = nothing
private sub dgvservices_editingcontrolshowing (byval sender as system. object, byval e as system. windows. forms. datagridvieweditingcontrolshowingeventargs) handles dgvservices. editingcontrolshowing
If dgvservices. currentcelladdress. X = colservice_rate.index then
_ editcell = ctype (E. control, datagridviewtextboxeditingcontrol)
_ editcell. selectall ()
addhandler _ editcell. keypress, new keypresseventhandler (addressof me. editcell_keypress)
end if
end sub
Private sub editcell_keypress (byval sender as object, byval e as keypresseventargs)
If (convert. toint32 (E. keychar) <48 orelse convert. toint32 (E. keychar)> 57) andalso convert. toint32 (E. keychar) <> 46 andalso convert. toint32 (E. keychar) <> 8 andalso convert. toint32 (E. keychar) <> 13) then
E. Handled = true
Else
If (convert. toint32 (E. keychar) = 46) andalso ctype (sender, datagridviewtextboxeditingcontrol). Text. indexof (".") <>-1) then
E. Handled = true
End if
End if
End sub
private sub dgvservices_cellendedit (byval sender as system. object, byval e as system. windows. forms. datagridviewcelleventargs) handles dgvservices. cellendedit
If e. columnindex = colservice_rate.index andalso E. rowindex>-1 then
dgvservices (E. columnindex, E. rowindex ). value = math. round (convert. todecimal (dgvservices (E. columnindex, E. rowindex ). value), 2, midpointrounding. awayfromzero)
end if
end sub