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 :

Probléme de couleur dans richtextbox avec un thread


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2018
    Messages
    323
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2018
    Messages : 323
    Par défaut Probléme de couleur dans richtextbox avec un thread
    Bonjour,

    je suis entrain de améliorer mon programme de recherche des fichiers dans un dossier mais mon problème avec plusieurs mot a changer de couleur dans le résultats dans richtextbox ça tourne en boucle mais avec un seul mot à changer de couleur ça fonctionne très bien. j'arrive pas à trouver la solution à mon problème. pourquoi ça tourne en boucle avec plusieurs mot à changer de couleur dans richtextbox.
    voici ce que ça donne avec deux mot à changer :
    Nom : Animation.gif
Affichages : 179
Taille : 270,6 Ko

    le code du mot à rechercher :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    For i = 0 To p.Value - 1 Step 1
    ...etc
    LogColor(RichTextBox1, p.Offset.Item(i), Color.Green)
                    LogColor(RichTextBox1, p.Pattern, Color.Red)
    Next i
    le code de couleur dans richtextbox :
    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
    Private Sub LogColor(ByVal box As RichTextBox, ByVal word As String, ByVal color As Color)
            If box.InvokeRequired Then
                box.Invoke(New UpdateResultDelegate(AddressOf LogColor), box, word, color)
            Else
                If String.IsNullOrEmpty(word) Then Return
                Dim pos As Integer = 0
                Do
                    If pos <> 0 AndAlso pos + word.Length < box.TextLength - 1 Then pos += word.Length
                    pos = box.Find(word, pos, RichTextBoxFinds.NoHighlight Or RichTextBoxFinds.WholeWord)
                    If pos > 0 Then
                        box.Select(pos, word.Length)
                        box.SelectionAlignment = HorizontalAlignment.Center
                        box.SelectionColor = color
                    End If
                    If pos + word.Length > box.TextLength - 1 Then Exit Do
                Loop While pos >= 0 AndAlso pos < box.TextLength - 1
            End If
        End Sub
    pouvez-vous me dire pourquoi avec plusieurs mot ça tourne en boucle avec deux mot à changer de couleur dans richtextbox1?
    Merci d'avance

  2. #2
    Membre éprouvé
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2018
    Messages
    323
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2018
    Messages : 323
    Par défaut
    Bonjour,
    je viens trouver la solution à mon problème.

    voici le code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ColorWord(RichTextBox1, New String() {p.Offset.Item(i), p.Pattern}, New Color() {Color.Green, Color.Red})
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Private Delegate Sub UpdateResultDelegate2(ByVal R As RichTextBox, ByVal World As String(), Color1 As Color())
    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
    Private Sub ColorWord(Box As RichTextBox, Worlds As String(), colorA As Color())
            If Box.InvokeRequired Then
                Box.Invoke(New UpdateResultDelegate2(AddressOf ColorWord), Box, Worlds, colorA)
            Else
                Dim start, found As Integer
                With Box
                    For i = 0 To Worlds.Count - 1
                        If String.IsNullOrEmpty(Worlds(i)) Then Return
                        found = .Find(Worlds(i), start, RichTextBoxFinds.WholeWord)
                        Do While found > -1
                            .SelectionStart = found
                            .SelectionLength = Worlds(i).Length
                            .SelectionAlignment = HorizontalAlignment.Center
                            .SelectionColor = colorA(i)
                            .DeselectAll()
                            start = found + Worlds(i).Length
                            If start >= .TextLength Then Exit Do
                            found = .Find(Worlds(i), start, RichTextBoxFinds.WholeWord)
                        Loop
                    Next
                End With
            End If
        End Sub
    Cordialement,

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

Discussions similaires

  1. Problème de couleur de fond avec TabControl
    Par Uren dans le forum Général Dotnet
    Réponses: 7
    Dernier message: 08/08/2008, 16h56
  2. problème d'affichage dans ruby avec ajax
    Par Lunardirc dans le forum Ruby on Rails
    Réponses: 2
    Dernier message: 23/06/2008, 14h59
  3. Forms 6i: problème de couleur dans une poplist
    Par managau dans le forum Forms
    Réponses: 0
    Dernier message: 29/05/2008, 14h50
  4. [c#]couleur dans richTextBox
    Par chasse dans le forum Windows Forms
    Réponses: 2
    Dernier message: 10/11/2006, 22h02
  5. problème de couleur dans le Menu [MainMenu - ImageList]
    Par alec_002 dans le forum Composants VCL
    Réponses: 8
    Dernier message: 01/09/2005, 15h29

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