2013-06-14 5 views
2

J'ai écrit une application qui contient une riche zone de texte avec un arrière-plan noir. Par conséquent, je dois écrire dedans en utilisant du texte blanc. Tout cela fonctionne bien en mettant la couleur avant au blanc. Si je copie cependant du texte de Word qui est noir dans ma zone de texte, ce texte reste noir.Modifier la couleur du texte existant

Je dois changer la couleur de ce texte. Voilà donc ce que j'ai essayé jusqu'à présent: (la zone de texte est nommé txtMessage)

txtMessage.ForeColor = Color.White; 

qui n'a pas d'effet sur le texte noir existant bien.

Alors j'ai essayé ceci:

private void txtMessage_TextChanged(object sender, EventArgs e) 
    { 
     int s = txtMessage.SelectionStart; 
     txtMessage.SelectAll(); 
     txtMessage.SelectionColor = Color.White; 
     txtMessage.Select(s, 0); 

    } 

en principe fonctionne très bien mais bien sûr, chaque fois que je modifier le texte dans la zone de texte (ne pas copier quelque chose là-dedans, mais simplement taper) le tout est exécuté avec Chaque lettre que je tape entraîne un scintillement (je suppose que tout est sélectionné puis désélectionné à chaque fois).

Alors est-ce que quelqu'un a une suggestion pour résoudre ce problème avec élégance?

Merci beaucoup.

+0

Quelle version de .NET ciblez-vous? Juste testé sur le ciblage VS2010 .NEt 4.0 Client Profile et copier/coller du texte noir à partir de Word rester blanc dans le contrôle RichTextBox même avec un arrière-plan noir et la couleur blanche spécifiée. – Sevenate

+0

Le plus récent je suppose. J'utilise VS2012 et mon ordinateur portable est assez nouveau. – tomet

Répondre

2

Si vous tapez dans la zone où la couleur est blanche, il n'est pas nécessaire d'exécuter le code.

Vous avez seulement besoin de l'exécuter lorsque vous ajoutez du texte que vous n'avez pas tapé (par exemple copier/coller à partir de votre exemple).

Par conséquent, utilisez ce code dans l'événement TextChanged, mais effectuer une vérification avant de l'exécuter pour savoir si l'utilisateur a tapé le texte ou ajouté une autre façon

EDIT: Vérifiez la réponse à cette question: Detecting a paste into a RichTextBox, cela peut vous aider

+0

Merci, j'ai aussi eu cette idée. Bien que je ne sais pas comment faire ça. – tomet

+1

Vérifiez ma vérification .. – iabbott

+0

Merci. Cela semble très raisonnable et facile. – tomet

Questions connexes