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

Windows Forms Discussion :

[VB 2005]Selectionner un mot dans une RichTextBox


Sujet :

Windows Forms

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2006
    Messages
    127
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2006
    Messages : 127
    Par défaut [VB 2005]Selectionner un mot dans une RichTextBox
    Voilà je suis en train de développer une application et j'ai créer une MessageBox dediée aux Erreurs de Saisie pour les formulaires.

    A Partir de mon formulaire je la déclare comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    'Vérification de la Conformité Syntaxique des Informations
            Dim ErreurSaisie As New BtErreurSaisie
    Je fais ensuite plusieurs contrôles sur les Données de mon formulaires :
    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
     
    Dim MessErreurs As String = ErreurSaisie.Description.Text, NbErreurs As String = 0
     
            Dim VerifNom As New Regex("^[-a-zA-Z]{2,}$")
            Dim VerifPrenom As New Regex("^[-a-zA-Z]{2,}$")
            Dim VerifMail As New Regex("^[a-zA-Z][a-zA-Z0-9]{2,}([\.|_|-][a-zA-Z0-9]{2,})*@[a-z0-9]{4,}\.[a-z]{2,3}$")
     
            If Me.txtNomEleve.Text = "" Then
                NbErreurs = NbErreurs + 1
                ErreurSaisie.Description.Text &= Chr(13) & NbErreurs & " - Vous Devez Indiquer Votre Nom Obligatoirement"
            Else
                If VerifNom.IsMatch(Me.txtNomEleve.Text) = False Then
                    NbErreurs = NbErreurs + 1
                    ErreurSaisie.Description.Text &= Chr(13) & NbErreurs & " - Vous Avez Renseigné un Nom Incorrect"
                End If
            End If
     
            If Me.txtPrenomEleve.Text = "" Then
                NbErreurs = NbErreurs + 1
                ErreurSaisie.Description.Text &= Chr(13) & NbErreurs & " - Vous Devez Indiquer Votre Prénom Obligatoirement"
            Else
                If VerifPrenom.IsMatch(Me.txtPrenomEleve.Text) = False Then
                    NbErreurs = NbErreurs + 1
                    ErreurSaisie.Description.Text &= Chr(13) & NbErreurs & " - Vous Avez Renseigné un Prénom Incorrect"
                End If
            End If
     
            If VerifMail.IsMatch(Me.txtMailEleve.Text) = False Then
                NbErreurs = NbErreurs + 1
                ErreurSaisie.Description.Text &= Chr(13) & NbErreurs & " - Vous Avez Renseigné une Adresse Mail Invalide"
            End If
    Pour Ensuite afficher le message :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    If NbErreurs <> 0 Then
                ErreurSaisie.ShowDialog()
    End If
    Moi ce que je souhaiterais c'est que dans mon message je puisse mettre les "Obligatoirement" en Rouge. Mais le problème c'est que je n'arrive pas à sélectionner le Mot.

    Si quelqu'un peut m'aider ce serait cool

  2. #2
    Membre confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2006
    Messages
    127
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2006
    Messages : 127
    Par défaut
    J'ai trouvé une alternative mais assez médiocre si on a plusieurs mots à selectionner ce qui est mon cas

    Mais bon la voici quand même :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    If NbErreurs <> 0 Then
                ErreurSaisie.Description.SelectionStart = 87
                ErreurSaisie.Description.SelectionLength = 15
    
                ErreurSaisie.Show()
    End If
    Dans mon cas ça donne ça



    Seulement comme vous pouvez le voir j'ai deux mot Obligatoirement (pour le moment) donc c'est plutôt médiocre comme méthode !

    Si vous avez un avis sur la question n'hésitez pas !

  3. #3
    Membre confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2006
    Messages
    127
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2006
    Messages : 127
    Par défaut


    Franchement c'est marrant de voir que je réponds tout seul à mon Message mais bon cela fera peut être des heureux dans l'avenir.

    J'ai ern fait créer une boucle qui n'a surement pas toutes les perfections mais qui fonctionne ce qui m'importe

    Donc voici la boucle en question :

    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
    If NbErreurs <> 0 Then
                Dim Init As Integer = 0
                While Init < ErreurSaisie.Description.Text.Length
                    If ErreurSaisie.Description.Find("Obligatoirement", Init, RichTextBoxFinds.MatchCase) <> -1 Then
                        ErreurSaisie.Description.SelectionStart = ErreurSaisie.Description.Find("Obligatoirement", Init, RichTextBoxFinds.MatchCase)
                    Else
                        Exit While
                    End If
                    ErreurSaisie.Description.SelectionLength = 15
                    ErreurSaisie.Description.SelectionColor = Color.Red
                    Init = ErreurSaisie.Description.SelectionStart + 16
                End While
                ErreurSaisie.Show()
            End If
    Je vais détaillé pour ceux qui n'aurait pas vu mon raisonnement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Dim Init As Integer = 0
                While Init < ErreurSaisie.Description.Text.Length
                    ' Je vérifie ici qu'il y a un résultat (-1 indique que la recherche est nulle)
                    If ErreurSaisie.Description.Find("Obligatoirement", Init, RichTextBoxFinds.MatchCase) <> -1 Then
                     'J'initie le Point de départ de ma recherche avec Init si un résultat est trouvé
                     'NOTE : La Méthode FIND retourne l'Index de départ du mot à trouver  
                     ErreurSaisie.Description.SelectionStart = ErreurSaisie.Description.Find("Obligatoirement", Init, RichTextBoxFinds.MatchCase)
                    Else
                    'Si la recherche est nulle on quitte la Boucle
                        Exit While
                    End If
    Une fois que le point de départ est placé au début du mot à trouver j'effectue la selection du mot :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ErreurSaisie.Description.SelectionLength = 15
    Ensuite je change la couleur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ErreurSaisie.Description.SelectionColor = Color.Red
    Et enfin je change la Variable Init pour que la rechercher suivante ne retrouve pas le mot déjà modifié. Je lui rajoute donc la longueur de mon mot (15 lettres) + 1 pour dépasser le mot.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    ...
    Init = ErreurSaisie.Description.SelectionStart + 16
                End While
    Voilà j'espère que cela aidera certains. En tout cas je me remercie de m'être aider !

    Félicitations à moi .

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

Discussions similaires

  1. Réponses: 9
    Dernier message: 23/12/2013, 16h40
  2. Mise en page d'un texte selectionné dans une richtextbox
    Par Nikogram dans le forum Windows Presentation Foundation
    Réponses: 11
    Dernier message: 11/12/2009, 18h18
  3. Colorer des mots automatiquement dans une richtextbox
    Par ghost emperor dans le forum Windows Forms
    Réponses: 8
    Dernier message: 21/05/2008, 11h28
  4. Suppression de mots dans une chaîne
    Par psychomatt dans le forum Langage
    Réponses: 7
    Dernier message: 06/08/2004, 15h34
  5. Comptage de mots dans une chaîne
    Par kikinou dans le forum Pascal
    Réponses: 10
    Dernier message: 01/01/2003, 02h27

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