Aller directement au carractère rechercher

Patrick02170 Messages postés 58 Date d'inscription dimanche 27 mars 2011 Statut Membre Dernière intervention 28 juin 2016 - 30 janv. 2016 à 12:54
vb95 Messages postés 3472 Date d'inscription samedi 11 janvier 2014 Statut Contributeur Dernière intervention 13 avril 2024 - 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





--

11 réponses

ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
Modifié par ucfoutu le 30/01/2016 à 14:33
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.
0
Patrick02170 Messages postés 58 Date d'inscription dimanche 27 mars 2011 Statut Membre Dernière intervention 28 juin 2016
30 janv. 2016 à 16:11
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.



--
0
Whismeril Messages postés 19029 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 26 avril 2024 656
30 janv. 2016 à 18:10
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
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
30 janv. 2016 à 18:28
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Patrick02170 Messages postés 58 Date d'inscription dimanche 27 mars 2011 Statut Membre Dernière intervention 28 juin 2016
30 janv. 2016 à 18:30
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.

--
0
Patrick02170 Messages postés 58 Date d'inscription dimanche 27 mars 2011 Statut Membre Dernière intervention 28 juin 2016
30 janv. 2016 à 18:37
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.

--
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
30 janv. 2016 à 19:05
Désolé, mais je crois t'avoir répondu.
0
Patrick02170 Messages postés 58 Date d'inscription dimanche 27 mars 2011 Statut Membre Dernière intervention 28 juin 2016
31 janv. 2016 à 00:18
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()
0
Patrick02170 Messages postés 58 Date d'inscription dimanche 27 mars 2011 Statut Membre Dernière intervention 28 juin 2016
31 janv. 2016 à 11:14
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

--
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
31 janv. 2016 à 11:39
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
0
vb95 Messages postés 3472 Date d'inscription samedi 11 janvier 2014 Statut Contributeur Dernière intervention 13 avril 2024 169
Modifié par vb95 le 2/02/2016 à 02:00
bonjour ucfoutu
C'est certain que VB net offre mieux !
une solution sans se casser la tête plus bas
Amitiés
0
vb95 Messages postés 3472 Date d'inscription samedi 11 janvier 2014 Statut Contributeur Dernière intervention 13 avril 2024 169
Modifié par vb95 le 2/02/2016 à 02:06
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. 
0
Rejoignez-nous