2010-06-22 10 views
0

Je développe une application en utilisant WinForms et le contrôle RichTextBox. Ce contrôle permet différents changements au formatage RTF en utilisant une propriété pour changer la police du texte sélectionné. J'ai un bouton pour basculer en gras sur le texte:Un moyen de surmonter les limites de RichTextBox?

richTextBoxEditor.SelectionFont = new Font(richTextBoxEditor.SelectionFont, 
    richTextBoxEditor.SelectionFont.Style^FontStyle.Bold); 

Mes autres boutons (italique, souligné) ont un code identique à l'exception de la partie FontStyle.BOLD qui est modifiée pour la mise en forme appropriée.

Maintenant le problème avec ceci est, si j'écris "Hello World" et changez le "bonjour" pour dire italique, et puis j'essaye de changer le "Hello World" entier en gras, "Hello" perd son italique. Je comprends pourquoi il le fait (parce que l'énumération pour toute la sélection est vide alors quand je passe en gras, le drapeau italique reste à 0), mais j'essaie de trouver un moyen de surmonter cela. Je ne peux pas penser à quelque chose à court d'aller caractère par caractère et de changer de style individuellement.

Est-ce que vous auriez une meilleure idée?

Merci.

Répondre

0

Il semble que le caractère par caractère soit votre pari le plus sûr. Cela ne semble pas être un problème important, sauf si vous créez un traitement de texte à part entière.

L'autre alternative consiste à fractionner les sélections en fonction du style actuel. Donc, si quelqu'un sélectionne une région plus grande qu'un style est appliqué, vous devez diviser la sélection en deux parties: la partie qui chevauche complètement la zone stylée et la partie qui ne chevauche pas la zone stylée du tout. Vous aurez besoin d'aller caractère par caractère pour savoir où casser les sélections, mais au moins vous n'aurez pas nécessairement à appliquer des styles à chaque personnage.