c# RTB - coller du texte brut, sans couleurs/polices?
Je suis Riche, objet Texte dans mon application en C#. Le seul problème que je rencontre est que lorsque l'utilisateur pâtes de formatage de texte à partir d'une autre application, il reste formaté que je ne peux pas avoir. Est-il de toute façon comment faire pour coller chaîne de caractères et d'ignorer le formatage?
Merci!
qui richtextbox utilisez-vous? Système.De Windows.Les contrôles.RichTextBox (wpf) ou d'un Système.De Windows.Les formulaires.RichTextBox (winforms)?
Désolé, Winforms, pas de WPF.
Ajout d'un deuxième code-exemple qui insère le contenu du presse-papiers au point d'insertion actuel dans le RichTextBox, puis met à jour le point d'insertion juste après l'ajout de texte. Deuxième exemple illustre également l'utilisation de Suspendre/Reprendre la Mise en page pour éviter l'effet de clignotement de re-paramétrer le contenu de la RichTextBox. Assurez-vous et de tester avec une variété de types de mise en forme d'entrée : encore une fois, ce n'est PAS complètement testé à un niveau où j'avais l'utiliser dans la production de code sans tests supplémentaires.
Désolé, Winforms, pas de WPF.
Ajout d'un deuxième code-exemple qui insère le contenu du presse-papiers au point d'insertion actuel dans le RichTextBox, puis met à jour le point d'insertion juste après l'ajout de texte. Deuxième exemple illustre également l'utilisation de Suspendre/Reprendre la Mise en page pour éviter l'effet de clignotement de re-paramétrer le contenu de la RichTextBox. Assurez-vous et de tester avec une variété de types de mise en forme d'entrée : encore une fois, ce n'est PAS complètement testé à un niveau où j'avais l'utiliser dans la production de code sans tests supplémentaires.
OriginalL'auteur Thomas | 2010-01-10
Vous devez vous connecter pour publier un commentaire.
En supposant que WinForms : essayez ceci : définir un RichTextBox avec un gestionnaire d'événement KeyDown comme ceci :
Append-only exemple :
[Modifier]
Ajouter le presse-papiers au format RTF à RichTextBox au point d'insertion actuel (début de la sélection) exemple :
[Fin Edit]
Note 0 : collées dans le texte est va assumer le style actuel des paramètres en vigueur pour la RichTextBox : si vous avez " la couleur de premier plan défini à 'Bleu : la collées dans le texte qui va être en bleu.
Note 1 : C'est quelque chose que j'ai frappé rapidement, et testé que quelques fois par la création de certains multi-coloré et bizarrement formaté au format RTF pour le presse-papiers à l'aide de WordPad : puis le coller dans le RichTextBox1 au moment de l'exécution : il ne bande à l'écart de toutes les couleurs, l'indentation, etc.
Puisqu'il n'est pas entièrement testé, utiliser avec précaution.
Note 2 : Ce ne le sera pas le cas de l'Insertion ou de " copier-Coller via le Menu Contextuel, évidemment.
La bienvenue à tous les critiques de cette réponse, et va immédiatement prendre vers le bas si elle n'est pas "sur la marque."
Gardez à l'esprit que le code ci-dessus est simplement en ajoutant le texte à la fin de la RTF contenu; pour utilisation dans le monde réel que vous aurez probablement envie de gérer le cas où vous souhaitez que le texte collé à insérer à l'actuel point d'insertion dans la RichTextBox (très facile à faire). J'ai testé le code pour s'assurer qu'aucune erreur est levée si le presse-papiers est "Vide" : pas de problème.
Je suis en train de penser à une solution visant à constamment de filtrage du contenu. Si le texte riche arrive dans une quantité inhumaine de temps (c'est à dire coller) puis convertir en texte normal.
lorsque vous avez sélectionné quelque chose et appuyez sur Ctrl+V, vous vous attendez à ce vieux de sélection pour être remplacé avec le contenu du presse-papiers, mais dans votre solution c'est ajouté. Par la façon dont @nQk 2-lignes solution fonctionne très bien )
Petite correction: postRTFContent devrait en fait être rempli avec
richTextBox2.Text.Substring(insPt + richTextBox2.SelectionLength)
, de sorte que le texte sélectionné est remplacé sur la pâte comme il se doit. Aussi, l'héritage coller le raccourci Shift+Insert doit être ajouté en tant que combinaison de touches.OriginalL'auteur BillW
Ajouter un gestionnaire à l'
KeyDown
-évènement pour intercepter la norme coller et insérer manuellement seulement le texte brut:La meilleure solution, celui-ci met à jour l'historique d'annulation trop
Ohh. Parfait. Besoins Maj+Insérer manipulation trop bien.
OriginalL'auteur nQk
J'étais à la recherche d'un texte en clair uniquement
richtextbox
mais je n'ai pas trouvé la solution en ligne.Pourquoi en Clair uniquement
RichTextBox
au lieu d'unTextBox
? Par exemple, parce queRichTextBox
est utilisable annuler/rétablir la fonctionnalité et beaucoup plus.J'ai finalement trouvé une solution parfaite en creusant le C fichiers d'en-tête du contrôle richedit: Un
RichTextBox
peut être commuté en mode texte brut, après qu'il n'accepte pas formaté le texte et les images et les choses semblables à partir du presse-papiers et se comporte comme un normalTextBox
formattingwise. Choses de fantaisie comme les images peuvent ne pas être collés et qu'il colle le texte mis en forme par la suppression de la mise en forme.Cool. Je suis content que ça a aidé!
OriginalL'auteur pasztorpisti
La réponse de pasztorpisti a fonctionné comme un charme pour moi. Depuis que je suis en utilisant vb.net je pensais que je poste mon traduits code pour les autres:
OriginalL'auteur mike
Bien le RichTextBox a un
SelectionFont
de la propriété de sorte que vous pouvez par exemple effectuer les opérations suivantes:Si un texte est collé, il sera automatiquement mis en forme.
OriginalL'auteur Memet Olsen
Vous pouvez également utiliser
OriginalL'auteur Thirusanguraja Venkatesan
J'ai réalisé cela en udpating la police et la couleur pour l'ensemble de la RTB lorsque son contenu est modifié. Cela fonctionne très bien pour moi que de l'entrée de la boîte n'a pas besoin de traiter d'énormes quantités de texte.
OriginalL'auteur deed02392
Ma solution
OriginalL'auteur user11261094
Simple, mais tout dans le presse-papiers est dans le texte lorsque l'application est ouverte.
OriginalL'auteur Brokdel