Aller directement au carractère rechercher

Messages postés
58
Date d'inscription
dimanche 27 mars 2011
Statut
Membre
Dernière intervention
28 juin 2016
- - Dernière réponse : vb95
Messages postés
1886
Date d'inscription
samedi 11 janvier 2014
Statut
Contributeur
Dernière intervention
15 juin 2019
- 2 févr. 2016 à 02:00
Bonjour, Je voudrai savoir quand je fait une recherche d'un mot dans une textbox, que ça me mène directement en cliquant sur un bouton.
Exemple comme le bloc-note recherche mot suivant trouver, mot précédent trouver.
merci de votre aide





--
Afficher la suite 

11 réponses

Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
209
0
Merci
Bonjour,
Commence donc par "éclater" le texte concerné sur le "mot" recherché (utilisation de la fonction Split). Le reste devrait venir tout seul ...
Commence donc.
Nota : en te faisant observer que le mot "mot" que tu utilises n'est pas exact, si l'on se réfères, comme tu le fais, à la manière dont tu as défini la recherche. Ce serait plutôt "chaine de caractères", que cette chaîne soit ou non un mot.
Allez. Mets-toi à cette tâche sur cette base. Reviens avec ce que tu auras au moins tenté, si encore en difficulté.

________________________
Nul ne saurait valablement coder ce qu'il ne saurait exposer clairement.
Commenter la réponse de ucfoutu
Messages postés
58
Date d'inscription
dimanche 27 mars 2011
Statut
Membre
Dernière intervention
28 juin 2016
0
Merci
Pour le moment, j'arrive à faire la recherche et à sélectionner en rouge le texte rechercher.
Exemple de recherche, je recherche "sujet" dans ma textbox1.

Si "sujet" y est 10 fois il serons tous sélectionner en rouge.

Moi je veux que quand la textbox1 est trop petite pour rendre TOUT le texte visible, je clique sur un bouton pour afficher le texte plus bas.

Car le problème ne se pose pas quand vous avez que 10 lignes de texte dans la textbox1, mes quand il y à plus de 300 lignes dedans, c'est un peux plus embêtant de monter descendre aller de gauche à droite ceci devient vite fastidieux.



--
Commenter la réponse de Patrick02170
Messages postés
13401
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
16 juin 2019
279
0
Merci
Bonsoir,

je ne comprends pas
Moi je veux que quand la textbox1 est trop petite pour rendre TOUT le texte visible,


est contradictoire de
mes quand il y à plus de 300 lignes dedans
Commenter la réponse de Whismeril
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
209
0
Merci
Ta question se résume-t-elle alors à comment faire défiler la textbox jusqu'à ce que ce que la ligne que tu y as sélectionnée soit affichée dans la partie visible ?
On est alors loin de la demande exprimée par ton premier message, qui ne concernait que la recherche, puisque tu dis avoir finalisé cet étape.
La lecture de MSND/VB.Net me donne à penser qu'il te faut alors utiliser la méthode ScrollToCaret exposée ici :
https://msdn.microsoft.com/fr-fr/library/system.windows.forms.textboxbase.scrolltocaret%28v=vs.110%29.aspx
qui doit bien entendu être précédée du positionnement du caret
Commenter la réponse de ucfoutu
Messages postés
58
Date d'inscription
dimanche 27 mars 2011
Statut
Membre
Dernière intervention
28 juin 2016
0
Merci
rendre = afficher

Moi je veux que quand la textbox1 est trop petite pour afficher TOUT le texte, je VOUDRAIS cliquer sur un bouton pour afficher le texte RECHERCHER plus bas.

--
Commenter la réponse de Patrick02170
Messages postés
58
Date d'inscription
dimanche 27 mars 2011
Statut
Membre
Dernière intervention
28 juin 2016
0
Merci
Dur a expliquer.
Voici un exemple, prenons l'exemple du Bloc-Note.

Le code de recherche doit correspondre à quand on fait "EDITION" "RECHERCHER" ensuite on met le mot ou phrase de rechercher, ensuite "SUIVANT" pour rechercher le 1er, "SUIVANT pour le 2ème, etc...

Quand on fait suivant le texte monte ou descend selon sont emplacement dans la fenêtre.

J’espère que c'est un peut plus compréhensible.

--
Commenter la réponse de Patrick02170
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
209
0
Merci
Désolé, mais je crois t'avoir répondu.
Commenter la réponse de ucfoutu
Messages postés
58
Date d'inscription
dimanche 27 mars 2011
Statut
Membre
Dernière intervention
28 juin 2016
0
Merci
Voici ce que je chercher avec une petite explication clair.
Désolé pour ma demande écrite qui à était tordu, mais en VB, plus on s'acharne sur une chose, plus on s'énerve et donc on s'éloigne de la solution.
La solution au remède dans un premier temps c'est prendre du recul, du repos si nécessaire.

Supposons que l’utilisateur cherche un mot dans le texte du contrôle. La méthode IndexOf localise la chaîne recherchée dans le texte, mais ne la sélectionne pas. « Visual »).

Dim ChaineCherchee As String = "Visual"
Dim ChaineLocation As Long
ChaineLocation = TextBox1.Text.IndexOf(ChaineCherchee)

If ChaineLocation > 0 Then

TextBox1.SelectionStart = ChaineLocation
TextBox1.SelectionLength = ChaineCherchee.Length

End If

TextBox1.ScrollToCaret()
Commenter la réponse de Patrick02170
Messages postés
58
Date d'inscription
dimanche 27 mars 2011
Statut
Membre
Dernière intervention
28 juin 2016
0
Merci
Bonjour, je sollicite encore votre aide pour quand je veux aller au prochain mot rechercher dans la textbox si il y en à, que ça m'y mène directement.

C'est à peux près le même code que celui donner dans le post précédent sauf que celui donner prend toujours le premier mot rechercher et ne veux pas aller au suivant.

Pouvez vous m'aider SVP
Merci

--
Commenter la réponse de Patrick02170
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
209
0
Merci
C'est pourtant simple :
Je ne serais pas étonné de ce que VB. Net (que je ne pratique pas) t'offre mieux, mais voilà déjà du simple :
traiter chaque fois la chaîne "restante" après élimination de la chaine précédente + la longueur de la chaîne cherchée.
Une variable compteur permettra de garder en mémoire le nombre de caractèrees déjà éliminés, afin de calculer le nouveau SelectionStart (de la chaîne originale)
Bien évidemment : travailler sur une copie du texte
Mais je suis presque certain de ce qu'il y a mieux à faire, y compris comme je le suggérais dès le départ (split).
Yapluka
vb95
Messages postés
1886
Date d'inscription
samedi 11 janvier 2014
Statut
Contributeur
Dernière intervention
15 juin 2019
60 -
bonjour ucfoutu
C'est certain que VB net offre mieux !
une solution sans se casser la tête plus bas
Amitiés
Commenter la réponse de ucfoutu
Messages postés
1886
Date d'inscription
samedi 11 janvier 2014
Statut
Contributeur
Dernière intervention
15 juin 2019
60
0
Merci
Bonjour
Une TextBox et un Bouton
Et ce code dans une Form

 
    Dim debutrecherche As Integer = 0 ' début recherche
    Dim chainecherchee As String = "AAAA" ' à toi de modifier

    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load

    End Sub

    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click

        Dim ChaineLocation As Integer = TextBox1.Text.IndexOf(chainecherchee, debutrecherche) ' position de la chaine
        If ChaineLocation >= 0 Then
            TextBox1.SelectionStart = ChaineLocation
            TextBox1.SelectionLength = 4
             ' RichTextBox1.SelectionBackcolor = Color.Red
            debutrecherche = ChaineLocation + 1 ' début de la recherche suivante
            TextBox1.ScrollToCaret()
        Else
            MessageBox.Show("Fin de la recherche")
            debutrecherche = 0 ' on recommence la recherche au début
        End If

    End Sub


Et encore mieux
Remplace la TextBox par une RichTextBox avec sa propriété MultiLine à True
Remplace Textbox1 par RichTextbox1 dans le code et rajoute la ligne en vert
Et la tu vois ta chaine en rouge

Attention c'est bien
If ChaineLocation >= 0 Then

Si on ne met pas le = et que la chaine est au tout début de la Textbox ou RichTextBox elle ne sera pas prise en compte : le premier caractère est en position 0

La théorie, c'est quand on sait tout et que rien ne fonctionne. La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi. 
Commenter la réponse de vb95