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
Version imprimable
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
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 ...
voilà le code mais il ne marche pas
Code:
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
j'ai trouvé une solution, si ca peut aider voici le code
Code:
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
Pas mal mais fort compliqué ...
Peut-être que le code suivant t'inspirera :
Code:
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
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:
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
vous essayez de réinventer StartsWith ou Contains ? :weird:
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,
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:
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
ca ne compte pas les doublons? et ca compte seulement quand la boucle for y est au bout?
Code:
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
problème résolu, j'avais omis de lui dire dans substring de comparaer caractère par caractère, merci
Code:
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