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 :

Petite question à propos des RichTextBox.


Sujet :

VB.NET

  1. #21
    Membre émérite Avatar de mactwist69
    Homme Profil pro
    Développement VB.NET
    Inscrit en
    Janvier 2007
    Messages
    1 707
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Développement VB.NET
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 707
    Points : 2 528
    Points
    2 528
    Par défaut
    C'est bien comme idée tout ça.

    Pour la deuxième boucle, tu peux directements utiliser le fin de ligne dans la boucle :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    While charindex2 < findeligne  AndAlso RichTextBox1.Text(charindex2) <> " "
     
                charindex2 += 1
                length += 1
          End While
    L'avenir appartient à ceux... dont les ouvriers se lèvent tôt. (Coluche)

  2. #22
    Membre du Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Février 2015
    Messages
    169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Février 2015
    Messages : 169
    Points : 60
    Points
    60
    Par défaut
    ah oui merci mais je n'arrives pas à trouver comment faire pour trouver ma fin de ligne :/. avec un

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    while richtextbox1.text(findeligne) <> ""
    findeligne +=1
    end while
    ça ne fonctionne pas... ce serait trop beau xD

  3. #23
    Membre du Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Février 2015
    Messages
    169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Février 2015
    Messages : 169
    Points : 60
    Points
    60
    Par défaut
    J'avance : j'en suis là a présent :
    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
    25
    26
     Private Sub RichTextBox1_MouseMove(sender As Object, e As MouseEventArgs) Handles RichTextBox1.MouseMove
            curseur_x_y = e.Location
            charindex = RichTextBox1.GetCharIndexFromPosition(curseur_x_y)
            line = RichTextBox1.GetLineFromCharIndex(charindex)
            finligne = RichTextBox1.Lines(line).Length
            debutligne = finligne - finligne
     
            While charindex > debutligne AndAlso RichTextBox1.Text(charindex) <> " "
                charindex -= 1
            End While
     
            If charindex <> debutligne Then
                charindex += 1
            End If
     
            charindex2 = charindex
            Dim length As Integer = 0
            While charindex2 < finligne AndAlso RichTextBox1.Text(charindex2) <> " "
                charindex2 += 1
                length += 1
            End While
     
            RichTextBox1.Select(charindex, length)
     
     
        End Sub
    je calcule une façon de calculer l'index de début de chaque lignes !

  4. #24
    Membre du Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Février 2015
    Messages
    169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Février 2015
    Messages : 169
    Points : 60
    Points
    60
    Par défaut
    J'avance petit à petit :
    J'en suis à ce code qui fonctionne presque : du moins pour les 2 premières lignes....

    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
    25
    26
    27
    28
    29
    30
    31
    32
    33
    Private Sub RichTextBox1_MouseMove(sender As Object, e As MouseEventArgs) Handles RichTextBox1.MouseMove
            curseur_x_y = e.Location
            charindex = RichTextBox1.GetCharIndexFromPosition(curseur_x_y)
            line = RichTextBox1.GetLineFromCharIndex(charindex)
     
            If line <> 0 Then
                debutligne = RichTextBox1.Lines(line - 1).Length + 1
            Else
                debutligne = 0
            End If
     
            finligne = RichTextBox1.Lines(line).Length + debutligne
     
     
            While charindex > debutligne AndAlso RichTextBox1.Text(charindex) <> " "
                charindex -= 1
            End While
     
            If charindex <> debutligne Then
                charindex += 1
            End If
     
            charindex2 = charindex
            Dim length As Integer = 0
            While charindex2 < finligne AndAlso RichTextBox1.Text(charindex2) <> " "
                charindex2 += 1
                length += 1
            End While
     
            RichTextBox1.Select(charindex, length)
     
     
        End Sub
    Je vais dormir et je reprends tout ça demain quand j'aurais le temps !

  5. #25
    Expert confirmé
    Avatar de Kropernic
    Homme Profil pro
    Analyste / Programmeur / DBA
    Inscrit en
    Juillet 2006
    Messages
    3 932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste / Programmeur / DBA
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 932
    Points : 4 239
    Points
    4 239
    Par défaut
    Ce petit exercice m'amusait alors je me suis pris au jeu et voici ce que j'ai produit :
    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
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
        Private Sub RichTextBox1_MouseMove(sender As Object, e As MouseEventArgs) Handles RichTextBox1.MouseMove
            If RichTextBox1.Lines.Count = 0 Then
                Exit Sub
            End If
            Dim charindex, i, start, _end As Integer
            Dim curseur_x_y As Point = e.Location
            charindex = RichTextBox1.GetCharIndexFromPosition(curseur_x_y)
     
            If RichTextBox1.Text(charindex) = " " Then
                Exit Sub
            End If
     
            Dim line As Integer = RichTextBox1.GetLineFromCharIndex(charindex)
     
            i = charindex
            Dim spaceOrCRLFfound As Boolean = False
            While Not spaceOrCRLFfound
                If i = -1 OrElse RichTextBox1.Text.Count = i OrElse RichTextBox1.Text(i) = " " OrElse RichTextBox1.Text(i) = Chr(10) OrElse RichTextBox1.Text(i) = Chr(13) Then
                    spaceOrCRLFfound = True
                Else
                    i -= 1
                End If
            End While
            start = i
            spaceOrCRLFfound = False
            i = charindex
            While Not spaceOrCRLFfound
                If i = -1 OrElse RichTextBox1.Text.Count = i OrElse RichTextBox1.Text(i) = " " OrElse RichTextBox1.Text(i) = Chr(10) OrElse RichTextBox1.Text(i) = Chr(13) Then
                    spaceOrCRLFfound = True
                Else
                    i += 1
                End If
            End While
            _end = i
     
            RichTextBox1.Select(start + 1, _end - start - 1)
        End Sub
    On pourrait encore l'enrichir pour ne pas qu'il sélectionne les signes de ponctuation à la fin d'un mot (ça permettrait de gérer le cas où, dans le texte, on aurait deux mots séparés par une ponctuation et sans espace avant ou après la ponctuation).

    L'algo peut également surement être amélioré. J'ai fait ça en 5 minutes en partant du code fourni donc c'est pas forcément super propre non plus. C'était juste pour voir si j'y arrivais. Après si ça peut t'aider et que tu décides de l'utiliser, c'est que du bonus ^^.
    Kropernic

  6. #26
    Membre du Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Février 2015
    Messages
    169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Février 2015
    Messages : 169
    Points : 60
    Points
    60
    Par défaut
    C'est nickel merci

    Je publie le code avec le filtrage des caractères et (je ne suis pas sur qu'il le soit mais j'ose quand même le dire...) plus "propre" ^^

    Merci beaucoup je suis pas sur d'avoir été capable de le trouver :/.
    Je le marque comme résolu !

  7. #27
    Membre du Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Février 2015
    Messages
    169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Février 2015
    Messages : 169
    Points : 60
    Points
    60
    Par défaut
    Et 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
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    Public Class Form1
        Dim Curseur_x_y As New Point
        Dim Charindex As Integer = 0
        Dim i As Integer = 0
        Dim Ligne As Integer = 0
        Dim Fin_Mot As Integer = 0
        Dim Début_Mot As Integer = 0
        Dim spaceOrCRLFfound As Boolean = False
        Dim Clic As Boolean = False
     
        Private Sub RichTextBox1_Click(sender As Object, e As EventArgs) Handles RichTextBox1.Click
            Clic = True
        End Sub
     
        Private Sub RichTextBox1_MouseMove(sender As Object, e As MouseEventArgs) Handles RichTextBox1.MouseMove
     
            If RichTextBox1.Lines.Count = 0 Then 'Si aucune ligne n'est présente dans la richtextbox, alors :'
                Exit Sub 'Sort de la fonctions.'
            End If 'Fin de la condition.'
     
            Curseur_x_y = e.Location 'Curseur_x_y = position actuelle du curseur de la souris.'
     
            Charindex = RichTextBox1.GetCharIndexFromPosition(Curseur_x_y) 'Charindex = position du caractère présent dans la richtextbox, le plus proche du curseur de la souris.'
     
            'Si le curseur de la souris (Charindex), se situe sur un espace, ou si il ce situe sur un retour à la ligne, ou si il ce situe sur un point, ou si il ce situe sur une virgule,'
            If RichTextBox1.Text(Charindex) = " " _
                OrElse RichTextBox1.Text(Charindex) = Chr(10) _
                OrElse RichTextBox1.Text(Charindex) = Chr(46) _
                OrElse RichTextBox1.Text(Charindex) = Chr(44) Then
                Exit Sub 'Sort de la fonctions.'
            End If 'Fin de la condition.'
     
            Ligne = RichTextBox1.GetLineFromCharIndex(Charindex) 'Ligne = numéro de ligne où le curseur de la souris ce situe.'
     
            i = Charindex 'La valeur Charindex (position du caractère présent dans la richtextbox, le plus proche du curseur de la souris) est stockée dans i.'
     
            spaceOrCRLFfound = False
     
            While Not spaceOrCRLFfound
     
                If i = -1 OrElse RichTextBox1.Text.Count = i _
                    OrElse RichTextBox1.Text(i) = " " _
                    OrElse RichTextBox1.Text(i) = Chr(10) _
                    OrElse RichTextBox1.Text(i) = Chr(13) _
                    OrElse RichTextBox1.Text(i) = Chr(46) _
                    OrElse RichTextBox1.Text(i) = Chr(44) Then
                    spaceOrCRLFfound = True
                Else
                    i -= 1
                End If
     
            End While
     
            Début_Mot = i
     
            spaceOrCRLFfound = False
     
            i = Charindex
     
            While Not spaceOrCRLFfound
     
                If i = -1 OrElse RichTextBox1.Text.Count = i _
                    OrElse RichTextBox1.Text(i) = " " _
                    OrElse RichTextBox1.Text(i) = Chr(10) _
                    OrElse RichTextBox1.Text(i) = Chr(13) _
                    OrElse RichTextBox1.Text(i) = Chr(46) _
                    OrElse RichTextBox1.Text(i) = Chr(44) Then
                    spaceOrCRLFfound = True
                Else
                    i += 1
                End If
     
            End While
     
            Fin_Mot = i
     
            RichTextBox1.Select(Début_Mot + 1, Fin_Mot - Début_Mot - 1)
     
            If Clic Then
                Label1.Text = "Ligne : " & Ligne & ". Mot : " & RichTextBox1.SelectedText
                Clic = False
            End If
     
        End Sub
     
    End Class

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. Réponses: 9
    Dernier message: 23/07/2014, 13h11
  2. [Javamail] Petite question à propos des Flags
    Par Hellnino18 dans le forum API standards et tierces
    Réponses: 1
    Dernier message: 26/05/2009, 08h49
  3. Petite question à propos d'une requete
    Par ViBy dans le forum Langage SQL
    Réponses: 4
    Dernier message: 15/09/2004, 12h21
  4. Une question à propos des thread
    Par tscoops dans le forum C++Builder
    Réponses: 4
    Dernier message: 07/11/2003, 14h03

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