2017-03-02 4 views
0

Je travaille sur un projet VB.NET 4.5 dans VS2013.Modifier le style de police sur toutes les instances d'une chaîne dans un RichTextBox

J'ai une riche zone de texte sur un formulaire et quand un bouton est cliqué, j'ai besoin de basculer le paramètre BOLD sur toutes les instances d'une chaîne spécifique trouvée dans la zone de texte riche.

J'ai mis en place un code basé sur this question.

Private Sub ToggleBold() 

    rtxtOutputText.SelectionStart = rtxtOutputText.Find("@#$%", RichTextBoxFinds.None) 

    rtxtOutputText.SelectionFont = New Font(rtxtOutputText.Font, FontStyle.Bold) 
End Sub 

Toutefois, lorsque le bouton gras bascule est cliqué, il met en gras seule la première instance de la chaîne « @ # $% ».

Comment puis-je mettre toutes les occurrences de la chaîne en gras? Il peut également y avoir plusieurs d'entre eux liés ensemble ("@ # $% @ # $% @ # $%"), de sorte que chacun d'entre eux devra être en gras aussi.

(je sais je l'ai mentionné gras basculer, mais je vais mettre en place la partie bascule plus tard, en ce moment je suis juste essayer d'obtenir le droit de travailler gras sur tous les cas ...)

Répondre

3

Juste ajoutez une boucle et utilisez le RichTextBox.Find(String, Int32, RichTextBoxFinds) overload pour spécifier d'où commencer à chercher. Regardez à partir de l'index actuel + 1 afin qu'il ne retourne pas le même à nouveau.

Vous devez également choisir réellement le mot aussi bien, de sorte que vous êtes sûr que le gras s'applique à l'instance actuelle uniquement et non le texte qui l'entoure. Merci à Plutonix pour m'avoir dit de disposer de la police.

+1

Il serait préférable de définir la police highlight/selected/special * une fois * et de réutiliser la même instance. Les polices sont IDisposables – Plutonix

+0

@Plutonix: Vous avez certainement raison à ce sujet! J'ai pensé à le faire mais j'ai changé d'avis :). Aussi, peut-on disposer le nouvel objet de police sans risque pour le contrôle? Ou devrais-je simplement le définir une fois comme l'instance de chaîne? –

+0

Vous pourriez le mettre dans un bloc 'Using', mais pourquoi créer la même nouvelle police encore et encore et en premier lieu? – Plutonix