IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB.NET Discussion :

Nombre : remplacer "." par "," [Débutant]


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Inscrit en
    Février 2012
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations forums :
    Inscription : Février 2012
    Messages : 16
    Par défaut Nombre : remplacer "." par ","
    Bonjour,

    Je sais, je sais, des milliers de topics parlent de ce sujet. j'en ai fait pas mal.
    Mais VB.NET et moi avons des problèmes de communications.

    Malgré toutes mes tentatives, de la plus soft à la plus barbare, rien n'y fait, je n'arrive pas à remplacer un simple "." en une petite ",".

    voici mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    Imports System.Math
     
    Private Sub TB_section_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TB_section.TextChanged
     
            ' numeric or not numeric
            If IsNumeric(TB_section.Text) Then
     
                TB_section.ForeColor = Color.Black
     
                If CB_section.SelectedItem = "mm²" Then
                    section = CDbl(TB_section.Text)
                    LBL_sect_m.Visible = True
                    LBL_sect_mm.Visible = True
                    LBL_sect_mm.Text = CStr(section) & " mm²"
                    LBL_sect_m.Text = CStr(Math.Round(section / 1000000, 2)) & " m²"
     
                ElseIf CB_section.SelectedItem = "m²" Then
                    LBL_sect_m.Visible = True
                    LBL_sect_mm.Visible = True
                    section = CDbl(TB_section.Text) * 1000000
                    LBL_sect_mm.Text = section & " mm²"
                    LBL_sect_m.Text = CStr(Math.Round(section / 1000000, 2)) & " m²"
     
                End If
     
            Else
     
                LBL_sect_m.Visible = False
                LBL_sect_mm.Visible = False
                TB_section.ForeColor = Color.Red
                section = 0
     
            End If
     
            ' enabled case
     
            If IsNumeric(TB_section.Text) And IsNumeric(TB_vitesse.Text) Then
                TB_debit.Enabled = False
            ElseIf IsNumeric(TB_debit.Text) And IsNumeric(TB_section.Text) Then
                TB_vitesse.Enabled = False
            Else 'If Not IsNumeric(TB_vitesse.Text) Then
                TB_debit.Enabled = True
                TB_vitesse.Enabled = True
            End If
     
     
        End Sub
    j'ai testé plusieurs solutions dont une qui m'a bien plus (car je la comprends..) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
            If InStr(TB_section.Text, ".") <> 0 Then
                TB_section.Text.Replace(".", ",")
            End If
    je l'ai insérée à l'entrée du Sub, pas bon.
    je l'ai insérée dans le Else du premier If , pas bon.
    je l'ai insérée à la sortie du Sub, pas bon.

    Soit c'est mon logiciel qui ne comprends rien (peu de chances..) soit c'est moi qui est du mal à me faire comprendre.

    mais où est donc l'erreur ?!

    merci d'avance.

  2. #2
    Membre Expert
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    700
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 700
    Par défaut
    Bonsoir,
    et dans le TB_section.Validating ?

  3. #3
    Membre éclairé
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Novembre 2011
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Novembre 2011
    Messages : 33
    Par défaut
    Si tu veux faire afficher ton nombre dans un textbox utilise un "MaskedTextBox" au lieu d'un "TextBox" ordinare.

  4. #4
    Membre averti
    Homme Profil pro
    Inscrit en
    Février 2012
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations forums :
    Inscription : Février 2012
    Messages : 16
    Par défaut
    excusez du retard...

    oui, j'ai déjà tenté dans le TB_section.Validating et aussi dans TB_section.KeyPress.

    sinon, j'ai testé avec une MaskedTextBox. aucun changement. le texte affiche toujours rouge.

    que faire?

  5. #5
    Membre éclairé
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Novembre 2011
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Novembre 2011
    Messages : 33
    Par défaut
    Essaie ça. Déclare toi une variable string dans ta méthode ensuite met ce que tu as remplacer dans ton textbox dans cette variable et ensuite n'utilise que cette variable.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Dim strSection as string = string.empty
     
    If TB_section.Text.Contains(".") Then
        strSection = TB_section.Text.Replace(".", ",")
    End If
    Et si ça fonctionne je vais te donner un peu plus d'explication.

  6. #6
    Membre averti
    Homme Profil pro
    Inscrit en
    Février 2012
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations forums :
    Inscription : Février 2012
    Messages : 16
    Par défaut
    Merci Ascendris!!! ça fonctionne!

    je suis parti de ton code. TB_section.Text.Contains(".") était la clé.

    je mets mon code final.. ça aidera peut-être certains qui sont dans mon cas.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
        Private Sub TB_section_Validating(ByVal sender As Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles TB_section.Validating
     
            If TB_section.Text.Contains(".") Then
                strSection = TB_section.Text.Replace(".", ",")
                TB_section.Text = strSection.ToString
            End If
            TB_section.Select(TB_section.Text.Length.ToString, 0)
     
            ' numeric or not numeric
            If IsNumeric(TB_section.Text) Then
     
                TB_section.ForeColor = Color.Black
     
                If CB_section.SelectedItem = "mm²" Then
                    section = CDbl(TB_section.Text)
                    LBL_sect_m.Visible = True
                    LBL_sect_mm.Visible = True
                    LBL_sect_mm.Text = CStr(section) & " mm²"
                    LBL_sect_m.Text = CStr(Math.Round(section / 1000000, 2)) & " m²"
     
                ElseIf CB_section.SelectedItem = "m²" Then
                    LBL_sect_m.Visible = True
                    LBL_sect_mm.Visible = True
                    section = CDbl(TB_section.Text) * 1000000
                    LBL_sect_mm.Text = section & " mm²"
                    LBL_sect_m.Text = CStr(Math.Round(section / 1000000, 2)) & " m²"
     
                End If
     
            Else
     
                LBL_sect_m.Visible = False
                LBL_sect_mm.Visible = False
                TB_section.ForeColor = Color.Red
                section = 0
     
            End If
        End Sub
    Merci encore.

  7. #7
    Membre éclairé
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Novembre 2011
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Novembre 2011
    Messages : 33
    Par défaut
    Citation Envoyé par Helicoid Voir le message
    je suis parti de ton code. TB_section.Text.Contains(".") était la clé.
    À vrai dire ce n'est pas TB_section.Text.Contains(".") qui étais la clé, c'est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     strSection = TB_section.Text.Replace(".", ",")
    Explication: Avant tu essayais de "modifier/transformer" la valeur directement dans le textbox et pour une raison quelconque ce n'est pas possible (Je crois c'est une raison de "thread"). Bref, je t'ai fais utiliser une variable string pour que celle-ci sert de variable dynamique pour permettre la "tranformation" du texte dans ton textbox.

    AVANT :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    TB_section.Text.Replace(".", ",")
    APRÈS:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    strSection = TB_section.Text.Replace(".", ",")

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 2
    Dernier message: 28/05/2015, 17h28

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo