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 :

comparer une textbox et un label


Sujet :

VB.NET

  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    428
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2008
    Messages : 428
    Par défaut comparer une textbox et un label
    Bonjour,
    soit un label avec des lettres, j'aimerai controler lors de la frappe d'une lettre dans une textbox si elle apparait dans le label, merci

  2. #2
    Membre Expert Avatar de Phil Rob
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2013
    Messages
    1 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Novembre 2013
    Messages : 1 613
    Par défaut
    Je suppose que l'écriture, dans la procédure événementielle de réponse au TextChanged, de l'algo de recherche de la dernière lettre tapée ±(LaTextBox.text.substring(LaTextBox.text.count-1)) dans le contenu du label (UnLabel.text), devrait faire ce que tu demandes ...

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    428
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2008
    Messages : 428
    Par défaut
    voilà le code mais il ne marche pas
    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
     Private Sub TextBox1_TextChanged(sender As Object, e As EventArgs) Handles TextBox1.TextChanged
            TextBox1.CharacterCasing = CharacterCasing.Upper
            Dim i, oui As Integer
            oui = 0
            For i = 0 To Len(Label1.Text) - 1
                If TextBox1.Text.Substring(TextBox1.Text.Count - 1) = (Label1.Text(i)) Then
                    oui = 1
                    If i = Len(Label1.Text) - 1 Then
                        If oui = 1 Then
                        Else
                            MsgBox("Ce n'est pas la meme lettre")
                        End If
                    End If
                End If
     
            Next
        End Sub

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    428
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2008
    Messages : 428
    Par défaut
    j'ai trouvé une solution, si ca peut aider voici le 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
    oui = 0
            If Len(TextBox1.Text) = 0 And non > 0 Or TextBox1.Text = "" Then
                non = 0
                Exit Sub
     
            End If
            non = 0
            For i = 0 To Len(Label1.Text) - 1
                ecrireINI("lettre fausse", "lettre", "0")
                If TextBox1.Text.Substring(TextBox1.Text.Count - 1) = Label1.Text(i) Then
                    oui = 1
                End If
            Next
            If oui = 0 And Len(TextBox1.Text) > 1 Then
                MsgBox("Cette lettre n'est pas dans les lettres proposées!!!")
                TextBox1.Text = Strings.Left(TextBox1.Text, TextBox1.Text.Length() - 1)
                TextBox1.Select(TextBox1.Text.Length, 0)
     
            End If
            If oui = 0 And Len(TextBox1.Text) = 1 Then
                MsgBox("Cette lettre n'est pas dans les lettres proposées!!!")
                non = non + 1
                TextBox1.Text = ""
            End If

  5. #5
    Membre Expert Avatar de Phil Rob
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2013
    Messages
    1 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Novembre 2013
    Messages : 1 613
    Par défaut
    Pas mal mais fort compliqué ...
    Peut-être que le code suivant t'inspirera :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
        Private Sub TextBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox1.TextChanged
            Dim DerniereLettre As Char
            DerniereLettre = TextBox1.Text.Substring(TextBox1.Text.Length - 1)
            If Label1.Text.IndexOf(DerniereLettre) > -1 Then
                MessageBox.Show(DerniereLettre)
            End If
        End Sub

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    428
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2008
    Messages : 428
    Par défaut
    merci pour le code, effectivement c'est plus simple!!!

    une autre question:
    j'aimerai savoir comment comparer deux textebox par exemple, il faudrait savoir si les caractères de la textbox1 sont dans la textbox2 même si les caractères sont pas au même endroit.
    vous avez une suggestion? merci

    j'ai fait ce code la mais il ne fonctionne pas, il y a peut etre des modifications?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Dim i As Integer
            Dim oui As Integer = 0
            For i = 1 To Len(TextBox1.Text) - 1
                If i.ToString.IndexOf(TextBox2.Text) <> -1 Then
                    oui = oui + 1
                End If
            Next
            If oui = Len(TextBox1.Text) Then
                TextBox3.Text = TextBox1.Text
            End If

  7. #7
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 204
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 204
    Par défaut
    vous essayez de réinventer StartsWith ou Contains ?
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  8. #8
    Membre Expert Avatar de Phil Rob
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2013
    Messages
    1 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Novembre 2013
    Messages : 1 613
    Par défaut
    For i = 1 To Len(TextBox1.Text) - 1
    If i.ToString.IndexOf(TextBox2.Text) <> -1 Then

    Là, c'est vraiment n'importe quoi ... utiliser le ToString sur un Integer pour accéder à une méthode de la classe String ...
    En fait ta dernière question est presque la même que celle du Label : là tu voulais savoir si la dernière lettre du TextBox existait dans le texte du Label.
    Que tu cherches dans le texte du Label ou dans celui d'un TexBox ne change rien à l'algo. La seule chose qui change dans ta dernière question, c'est que tu ne t’intéresses plus seulement à la dernière lettre du TextBox mais à toutes ses lettres, si j'ai bine compris
    Le code du Substring de tout à l'heure peut être mis dans une boucle pour lire toutes les lettres du TextBox une à une.
    A propos de Substring (consulte quand même les infos de l'Intellisense) :
    UneChaine.Substring(IndiceDeDebut) : Retourne les caractères de l’IndiceDeDebut jusqu’au bout de la chaine
    UneChaine.Substring(IndiceDeDebut, NombreDeCaracteres) : Retourne NombreDeCaracteres caractères extraits à partir de l’IndiceDeDebut

    Bon travail,

  9. #9
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    428
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2008
    Messages : 428
    Par défaut
    oui, c'est bien ce qu'il me semblait pour le tostring, mais en tout cas merci pour l'information

    voilà une version qui à l'air de fonctionner, dites moi se que vous en pensez, merci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Dim i, y As Integer
            Dim lettre1, lettre2 As String
            Dim oui As Integer = 0
            For i = 0 To Len(TextBox1.Text) - 1
                lettre1 = TextBox1.Text.Substring(i)
                For y = 0 To Len(TextBox2.Text) - 1
                    lettre2 = TextBox2.Text.Substring(y)
                    If lettre1.IndexOf(lettre2) <> -1 Then
                        oui = oui + 1
                    End If
                Next
            Next

  10. #10
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    428
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2008
    Messages : 428
    Par défaut
    ca ne compte pas les doublons? et ca compte seulement quand la boucle for y est au bout?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Dim i, y As Integer
            Dim lettre1, lettre2 As String
            Dim oui As Integer = 0
            For i = 0 To Len(TextBox1.Text) - 1
                lettre1 = TextBox1.Text.Substring(i)
                For y = 0 To Len(TextBox2.Text) - 1
                    lettre2 = TextBox2.Text.Substring(y)
                    If lettre1 = lettre2 Then
                        oui = oui + 1
                    End If
                Next
            Next

  11. #11
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    428
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2008
    Messages : 428
    Par défaut
    problème résolu, j'avais omis de lui dire dans substring de comparaer caractère par caractère, merci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Dim i, y As Integer
            Dim lettre1, lettre2 As String
            Dim oui As Integer = 0
            For i = 0 To Len(TextBox1.Text) - 1
                lettre1 = TextBox1.Text.Substring(i, 1)
                For y = 0 To Len(TextBox2.Text) - 1
                    lettre2 = TextBox2.Text.Substring(y, 1)
                    If lettre1 = lettre2 Then
                        oui = oui + 1
                    End If
                Next
            Next

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

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