L'un des contrôles de mon application limite la possibilité pour un utilisateur de modifier uniquement le style de police (B, I, U) et la couleur du texte. J'ai créé un contrôle personnalisé qui hérite de RichTextBox à cet effet. Je suis capable d'intercepter CTRL-V, et définir la police du texte collé à SystemFonts.DefaultFont
. Le problème auquel je suis actuellement confronté est que si le texte collé contient, par exemple, un demi-style demi-gras normal - le gras est perdu.Comment définir le RichFextBox.SelectionFont FontFamily sans modifier le style?
I.e. "Foo Bar" sera simplement coller comme "Foo Bar".
Ma seule idée est actuellement de passer par le texte caractère par caractère (très lent), et faire quelque chose comme:
public class MyRichTextBox : RichTextBox
{
private RichTextBox hiddenBuffer = new RichTextBox();
/// <summary>
/// This paste will strip the font size, family and alignment from the text being pasted.
/// </summary>
public void PasteUnformatted()
{
this.hiddenBuffer.Clear();
this.hiddenBuffer.Paste();
for (int x = 0; x < this.hiddenBuffer.TextLength; x++)
{
// select the next character
this.hiddenBuffer.Select(x, 1);
// Set the font family and size to default
this.hiddenBuffer.SelectionFont = new Font(SystemFonts.DefaultFont.FontFamily, SystemFonts.DefaultFont.Size, this.hiddenBuffer.SelectionFont.Style);
}
// Reset the alignment
this.hiddenBuffer.SelectionAlignment = HorizontalAlignment.Left;
base.SelectedRtf = this.hiddenBuffer.SelectedRtf;
this.hiddenBuffer.Clear();
}
}
Quelqu'un peut-il penser à un produit de nettoyage (et plus rapide) Solution?