none
Modifier le séparateur décimale d'un poste RRS feed

  • Question

  • Bonjour 

    Je cherche à modifier le séparateur décimale d'un poste (XP, VISTA, WIN 7) au démmarage de mon application. Soit par point ou par virgule selon un paramétre.

    Cordialement,

    vendredi 17 septembre 2010 09:54

Réponses

  • Bonjour,

    Rajoutez un Main() dans votre application et mettez le code suivant (Form1 est le nom de votre fenêtre principale) :

      Public Shared Sub Main()
        Dim c As CultureInfo
    
        c = New CultureInfo(Thread.CurrentThread.CurrentCulture.Name)
        c.NumberFormat.NumberDecimalSeparator = "mon séparateur à moi pour les nombre Single et Double"
        c.NumberFormat.CurrencyDecimalSeparator = "mon séparateur à moi pour le type Decimal"
    
        Thread.CurrentThread.CurrentCulture = c
        Thread.CurrentThread.CurrentUICulture = c
    
        Application.Run(New Form1())
      End Sub
    

    Cordialement


    Gilles TOURREAU - MVP C# - MCTS ADO .NET 3.5 - MCPD Windows Developper 3.5 - Architecte .NET/Consultant/Formateur - http://gilles.tourreau.fr
    vendredi 17 septembre 2010 10:12
    Modérateur
  • Bonjour,

    Voici le code qui permet de définir la lettre "a" comme séparateur décimal dans les options régionales de Windows :

      Private Const LOCALE_SDECIMAL As UInteger = &HE
      Private Const LOCALE_SMONDECIMALSEP As UInteger = &H16
      Private Const LOCALE_USER_DEFAULT As Integer = 1024
    
      <DllImport("kernel32.dll")> _
      Friend Shared Function SetLocaleInfo(ByVal Locale As UInteger, ByVal LCType As UInteger, ByVal lpLCData As String) As Boolean
      End Function
    
      Shared Sub SubMain()
        SetLocaleInfo(LOCALE_USER_DEFAULT, LOCALE_SDECIMAL, "a")
        SetLocaleInfo(LOCALE_USER_DEFAULT, LOCALE_SMONDECIMALSEP, "a")
      End Sub
    

    Cordialement


    Gilles TOURREAU - MVP C# - MCTS ADO .NET 3.5 - MCPD Windows Developper 3.5 - Architecte .NET/Consultant/Formateur - http://gilles.tourreau.fr
    dimanche 19 septembre 2010 12:00
    Modérateur

Toutes les réponses

  • Bonjour,

    Rajoutez un Main() dans votre application et mettez le code suivant (Form1 est le nom de votre fenêtre principale) :

      Public Shared Sub Main()
        Dim c As CultureInfo
    
        c = New CultureInfo(Thread.CurrentThread.CurrentCulture.Name)
        c.NumberFormat.NumberDecimalSeparator = "mon séparateur à moi pour les nombre Single et Double"
        c.NumberFormat.CurrencyDecimalSeparator = "mon séparateur à moi pour le type Decimal"
    
        Thread.CurrentThread.CurrentCulture = c
        Thread.CurrentThread.CurrentUICulture = c
    
        Application.Run(New Form1())
      End Sub
    

    Cordialement


    Gilles TOURREAU - MVP C# - MCTS ADO .NET 3.5 - MCPD Windows Developper 3.5 - Architecte .NET/Consultant/Formateur - http://gilles.tourreau.fr
    vendredi 17 septembre 2010 10:12
    Modérateur
  • Rebonjour

    merci pour votre réponse, j'ai tester le code mais le probleme c que lorsque je consulte ( Options régionales, date, heure et langue>Personnaliser les options régionales>Symbole décimal) je trouve tjrs l'ancien symbole.merci

    vendredi 17 septembre 2010 10:49
  • Bonjour,

    Ce code ne modifie pas les options régionales de Windows, mais les paramètres de votre application uniquement. Que voulez-vous faire exactement ?

    Cordialement


    Gilles TOURREAU - MVP C# - MCTS ADO .NET 3.5 - MCPD Windows Developper 3.5 - Architecte .NET/Consultant/Formateur - http://gilles.tourreau.fr
    vendredi 17 septembre 2010 10:53
    Modérateur
  • Modifie les options régionales de Windows SI POSSIBLE
    vendredi 17 septembre 2010 11:26
  • Bonjour,

    Voici le code qui permet de définir la lettre "a" comme séparateur décimal dans les options régionales de Windows :

      Private Const LOCALE_SDECIMAL As UInteger = &HE
      Private Const LOCALE_SMONDECIMALSEP As UInteger = &H16
      Private Const LOCALE_USER_DEFAULT As Integer = 1024
    
      <DllImport("kernel32.dll")> _
      Friend Shared Function SetLocaleInfo(ByVal Locale As UInteger, ByVal LCType As UInteger, ByVal lpLCData As String) As Boolean
      End Function
    
      Shared Sub SubMain()
        SetLocaleInfo(LOCALE_USER_DEFAULT, LOCALE_SDECIMAL, "a")
        SetLocaleInfo(LOCALE_USER_DEFAULT, LOCALE_SMONDECIMALSEP, "a")
      End Sub
    

    Cordialement


    Gilles TOURREAU - MVP C# - MCTS ADO .NET 3.5 - MCPD Windows Developper 3.5 - Architecte .NET/Consultant/Formateur - http://gilles.tourreau.fr
    dimanche 19 septembre 2010 12:00
    Modérateur
  • Bonjour

    Merci bcp pour le code Mr Gilles, ça me permet de définir le séparateur qui me convient.

     

    Cordialement,

    lundi 20 septembre 2010 10:18