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 :

Obtenir la valeur d'un control TextBox avec un format personnalisé


Sujet :

VB.NET

  1. #1
    Membre averti
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2012
    Messages
    640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Bâtiment

    Informations forums :
    Inscription : Mars 2012
    Messages : 640
    Points : 372
    Points
    372
    Par défaut Obtenir la valeur d'un control TextBox avec un format personnalisé
    Bonjour à tous, j'ai 2 procédures qui se ressemblent et qui font à prêt la même chose, j'aimerais faire qu'une seule procédure ou fonction.
    Dans un cas (Bind_Parse) je "parse" la valeur d'un contrôle ((L'argument sender est un objet binding), dans l'autre cas Get_TrueCtrlValue j'obtiens sa valeur directement à partir de sa propriété (L'argument Sender est un objet Control).

    Et comment obtenir l'objet binding à partir du control et vice versa (obtenir l'objet Control à partir de l'objet Binding) ?
    Quelle est la meilleure solution parmis les 2 qui se prêtent le mieux à ce que je voudrais faire .


    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
        Public Sub Bind_Parse(ByVal sender As Object, ByVal e As System.Windows.Forms.ConvertEventArgs, Optional ByVal FormatStyle As FormatStyle = FormatStyle.NotSet)
            Dim Bind As Binding = CType(sender, Binding)
            Dim ctrl As Control = Bind.Control
            'Dim ctrl As Control = CType(sender, Control)
            If TypeOf (ctrl) Is TextBox Then
                Dim c As TextBox = CType(ctrl, TextBox)
                If FormatStyle = Main.FormatStyle.Monnaie Then e.Value = Decimal.Parse(CType(e.Value, String), Globalization.NumberStyles.Currency)
                'ColChangingValue = c.Text
            ElseIf TypeOf (ctrl) Is ComboBox Then
                Dim c As ComboBox = CType(ctrl, ComboBox)
            ElseIf TypeOf (ctrl) Is CheckBox Then
                Dim c As CheckBox = CType(ctrl, CheckBox)
            ElseIf TypeOf (ctrl) Is DateTimePicker Then
                Dim c As DateTimePicker = CType(ctrl, DateTimePicker)
            End If
        End Sub
    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
        Public Function Get_TrueCtrlValue(ByVal sender As Object) As Object
            Dim Value As Object = Nothing
            If TypeOf (sender) Is TextBox Then
                Dim c As TextBox = CType(sender, TextBox)
                Value = c.Text
            ElseIf TypeOf (sender) Is ComboBox Then
                Dim c As ComboBox = CType(sender, ComboBox)
                Value = c.Text
            ElseIf TypeOf (sender) Is CheckBox Then
                Dim c As CheckBox = CType(sender, CheckBox)
                Value = c.Checked
            ElseIf TypeOf (sender) Is DateTimePicker Then
                Dim c As DateTimePicker = CType(sender, DateTimePicker)
                If CStr(c.Tag) = "DBNull" Then  ' Astuce pour retourner Nothing si le champs correspondant = DBNull
                    Value = Nothing
                Else
                    Value = c.Value
                End If
            End If
            Return Value
        End Function
    J'espère que vous pourrez m'aider.

  2. #2
    Membre averti
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2012
    Messages
    640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Bâtiment

    Informations forums :
    Inscription : Mars 2012
    Messages : 640
    Points : 372
    Points
    372
    Par défaut
    Bonjour, en fait je n'utilise pas le "Parse" donc ça règle le premier problème (faire une seule procédure ou fonction).

    Maintenant j'ai un autre problème, la ligne suivante ne fonctionne pas avec les chaines de longueurs = 0 :
    (J'ai simplifié le code pour la compréhension)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Dim c as Textbox
    Value = Decimal.Parse(CType(c.Text, String), Globalization.NumberStyles.Currency)
    Je ne sait pas si j'utilise la bonne méthode.

    Le but c'est de lire la vraie valeur d'un contrôle qui a été "formaté" dans l’évènement Format de son Binding.

  3. #3
    Membre averti
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2012
    Messages
    640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Bâtiment

    Informations forums :
    Inscription : Mars 2012
    Messages : 640
    Points : 372
    Points
    372
    Par défaut
    Bonjour,
    Je suis perdu, j'ai essayé le code ci-dessous ça ne fonctionne pas : Je lit : Success=True mais la valeur retournée "Value" est égale à Nothing

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Success = Decimal.TryParse(CType(c.Text, String), Globalization.NumberStyles.Currency, Globalization.CultureInfo.CreateSpecificCulture("fr-FR"), CDec(Value))
    Pour donner un exemple :
    Je voudrais récupérer dans la variable value : 100.50 quand mon TextBox affiche 100.50 € (bien sûre ça doit fonctionner aussi si je tape moi-même 100.50)

    Merci à vous si vous pouvez m'aider.

  4. #4
    Membre averti
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2012
    Messages
    640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Bâtiment

    Informations forums :
    Inscription : Mars 2012
    Messages : 640
    Points : 372
    Points
    372
    Par défaut
    J'ai trouvé :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Dim decValue As Decimal
    Success = Decimal.TryParse(CType(c.Text, String), Globalization.NumberStyles.Currency, Globalization.CultureInfo.CreateSpecificCulture("fr-FR"), decValue)

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

Discussions similaires

  1. [XL-2003] controle textbox avec chiffre commencant par 0
    Par arthur83fr dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 28/09/2011, 20h28
  2. controle textbox avec c#
    Par rimenis dans le forum C#
    Réponses: 5
    Dernier message: 02/05/2011, 13h01
  3. Valeur d'un champ TextBox avec propriété visible = false
    Par mohamed301084 dans le forum VB.NET
    Réponses: 4
    Dernier message: 26/04/2010, 16h02
  4. Obtenir la valeur d'un controle ajouter au runtime.
    Par dalkar69 dans le forum ASP.NET
    Réponses: 3
    Dernier message: 29/10/2009, 19h52
  5. Réponses: 18
    Dernier message: 23/04/2008, 12h11

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