Soyez le premier à donner votre avis sur cette source.
Vue 13 231 fois - Téléchargée 1 098 fois
Public Class Form1 'Lorsque l'utisateur va saisir dans la colonne "Decimal", les . seront remplacés par le bon séparteur de décimals. Private Sub DataTable1DataGridView_EditingControlShowing(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewEditingControlShowingEventArgs) Handles DataTable1DataGridView.EditingControlShowing Dim voControl As DataGridViewTextBoxEditingControl Try If DataTable1DataGridView.Columns(DataTable1DataGridView.CurrentCell.ColumnIndex).Name = "DataGridViewTextBoxColumnDecimal" Then voControl = CType(e.Control, DataGridViewTextBoxEditingControl) AddHandler voControl.KeyPress, AddressOf EditingControl_KeyPress End If Catch ex As Exception End Try End Sub Private Sub EditingControl_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Dim vsDecimalSeparator As Char vsDecimalSeparator = System.Threading.Thread.CurrentThread.CurrentCulture.NumberFormat.NumberDecimalSeparator If vsDecimalSeparator <> "." And e.KeyChar = "." Then e.KeyChar = vsDecimalSeparator End If End Sub End Class
19 avril 2007 à 16:25
19 déc. 2006 à 10:03
Merci pour le bout de code qui peut être fort utile. Par contre, ici le but est de ne surtout pas changer de culture (le séparateur de décimal est toujours la visgule pour la France), mais juste de pouvoir utiliser le pavé numérique pour saisir des nombres avec des virgules.
TiK
7 déc. 2006 à 18:38
Voici le bout de code
'On récupère le séparateur qui est utilisé sur la station de travail
Dim oldDecimalSeparator As String = Application.CurrentCulture.NumberFormat.NumberDecimalSeparator
'On compare le séparateur instancié avec le point
If oldDecimalSeparator = "." Then
'Le séparateur instancié dans le panneau de configuration est le point : "."
Else
'Le séparateur instancié dans le panneau de configuration est la virgule : ","
Dim forceDotCulture As CultureInfo
'Code un peu louche il faut avouer, mais il faut faire avec car le framework pose problème
'ici; en effet, il faut cloner la culture pour pouvoir modifier les paramètres de l'application
'car sinon la culture de base est en lecture seule.
forceDotCulture = Application.CurrentCulture.Clone()
'On affecte le point : "." comme paramètre de séparateur décimal
forceDotCulture.NumberFormat.NumberDecimalSeparator = "."
'Là, on affecte l'application cloné à celle où l'on travaille
'C'est un passage flou car en fait, l'appli est en mode readonly et l'on ne peut pas
'la modifier directement, d'où cette affectation
Application.CurrentCulture = forceDotCulture
End If
C'est peut etre une solution bizarre mais ça marche.
Tu fais ça au demarrage et c'est bon (Il y a que la culture de l'appli qui change)
20 oct. 2006 à 17:44
16 oct. 2006 à 00:54
Bon fo etre honnete je sais pas sil servira souvent, mais on peut peut etre se baser dessus pour en faire des variantes
8/10 quoique allez je mets mm 9
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.