SOMENTE NUMEROS EM DATAGRIDVIEW
Gostaria de formatar a coluna PREÇO para que aceite somente numero e virgula.
Como fazer?
Experimente isto:
1 - Com o botão do lado direito do mouse clique em cima da grid;
2 - No menu que aparecerá, escolha [Ô]Edit columns...[Ô];
3 - Dentro da [Ô]Edit Columns[Ô] procure por: [Ô]Appearence[Ô] / [Ô]DefaultCellStyle[Ô] -> clique no botão (...);
4 - Dentro da [Ô]CellStyle Builder[Ô] procure por: [Ô]Behavior[Ô] / [Ô]Format[Ô] -> clique no botão (...);
5 - Em [Ô]Format Type[Ô], escolha [Ô]Currency[Ô];
[][ô]s,
Tunusat.
O que desejo mesmo é bloquear a digitação de letras nesta coluna de PREÇO e permitir somente NUMERO e VIRGULA.
No Visual Basic 6 fazia isso no FlexGrid através do evento KeyPress fazendo o tratamento das teclas pressionadas.
Estou começando no VB.NET e não sei como fazer.
Vou dar um exemplo FUNCIONAL, basta você aplicar a sua necessidade
no evento EditingControlShowing do datagrid você adiciona isto:
Citação:
Private Sub DataGridView1_EditingControlShowing(sender As Object, e As DataGridViewEditingControlShowingEventArgs) Handles DataGridView1.EditingControlShowing
Dim tb As TextBox = CType(e.Control, TextBox)
AddHandler tb.KeyPress, AddressOf TextBox_KeyPress
End Sub
Agora basta criar o evento keypress
Citação:
Private Sub TextBox_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs)
If Not Char.IsNumber(e.KeyChar) And Not e.KeyChar = vbBack And Not e.KeyChar = [Ô].[Ô] And Not e.KeyChar = [Ô],[Ô] Then
e.Handled = True
End If
End Sub
Abraços
Private Sub gridProduto_EditingControlShowing(sender As Object, e As DataGridViewEditingControlShowingEventArgs) Handles gridProduto.EditingControlShowing
Dim tbQtde As TextBox = CType(e.Control, TextBox)
AddHandler tbQtde.KeyPress, AddressOf clQtde_KeyPress
Dim tbPreco As TextBox = CType(e.Control, TextBox)
AddHandler tbPreco.KeyPress, AddressOf clPreco_KeyPress
End Sub
Private Sub clQtde_KeyPress(sender As Object, e As KeyPressEventArgs) Handles gridProduto.KeyPress
If Not Char.IsNumber(e.KeyChar) And Not e.KeyChar = vbBack Then
e.Handled = True
End If
End Sub
Private Sub clPreco_KeyPress(sender As Object, e As KeyPressEventArgs) Handles gridProduto.KeyPress
If Not Char.IsNumber(e.KeyChar) And Not e.KeyChar = vbBack And Not e.KeyChar = [Ô],[Ô] Then
e.Handled = True
End If
End Sub
ex:
Citação:
Private Sub DataGridView1_EditingControlShowing(sender As Object, e As DataGridViewEditingControlShowingEventArgs) Handles DataGridView1.EditingControlShowing
Dim tb As TextBox = CType(e.Control, TextBox)
AddHandler tb.KeyPress, AddressOf TextBox_KeyPress
End Sub
Private Sub TextBox_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs)
If DataGridView1.CurrentRow.Cells([Ô]qtd[Ô]).Selected = True Then
If Not Char.IsNumber(e.KeyChar) And Not e.KeyChar = vbBack And Not e.KeyChar = [Ô].[Ô] And Not e.KeyChar = [Ô],[Ô] Then
e.Handled = True
End If
End If
End Sub