J'essaie de définir/obtenir le texte de mon RichTextBox, mais Text n'est pas dans la liste de ses propriétés lorsque je souhaite obtenir test.Text.
J'utilise le code derrière en C # (.net framework 3.5 SP1)
RichTextBox test = new RichTextBox();
ne peut pas avoir test.Text(?)
Savez-vous comment cela peut être possible?
to set RichTextBox text:
richTextBox1.Document.Blocks.Clear();
richTextBox1.Document.Blocks.Add(new Paragraph(new Run("Text")));
to get RichTextBox text:
string richText = new TextRange(richTextBox1.Document.ContentStart, richTextBox1.Document.ContentEnd).Text;
Il y avait une confusion entre RichTextBox dans System.Windows.Forms et dans System.Windows.Control
J'utilise celui du contrôle comme j'utilise WPF. Là, il n'y a pas de propriété Text, et pour obtenir un texte, j'aurais dû utiliser cette ligne:
string myText = new TextRange(transcriberArea.Document.ContentStart, transcriberArea.Document.ContentEnd).Text;
merci
WPF RichTextBox a une propriété Document
pour définir le contenu a la MSDN:
// Create a FlowDocument to contain content for the RichTextBox.
FlowDocument myFlowDoc = new FlowDocument();
// Add paragraphs to the FlowDocument.
myFlowDoc.Blocks.Add(new Paragraph(new Run("Paragraph 1")));
myFlowDoc.Blocks.Add(new Paragraph(new Run("Paragraph 2")));
myFlowDoc.Blocks.Add(new Paragraph(new Run("Paragraph 3")));
RichTextBox myRichTextBox = new RichTextBox();
// Add initial content to the RichTextBox.
myRichTextBox.Document = myFlowDoc;
Vous pouvez simplement utiliser la méthode AppendText
si c'est tout ce que vous recherchez.
J'espère que cela pourra aider.
string GetString(RichTextBox rtb)
{
var textRange = new TextRange(rtb.Document.ContentStart, rtb.Document.ContentEnd);
return textRange.Text;
}
Il n'y a pas de propriété Text
dans le contrôle WPF RichTextBox. Voici un moyen de sortir tout le texte:
TextRange range = new TextRange(myRTB.Document.ContentStart, myRTB.Document.ContentEnd);
string allText = range.Text;
RichTextBox rtf = new RichTextBox();
System.IO.MemoryStream stream = new System.IO.MemoryStream(ASCIIEncoding.Default.GetBytes(yourText));
rtf.Selection.Load(stream, DataFormats.Rtf);
OR
rtf.Selection.Text = yourText;
En utilisant deux méthodes d'extension, cela devient très facile:
public static class Ext
{
public static void SetText(this RichTextBox richTextBox, string text)
{
richTextBox.Document.Blocks.Clear();
richTextBox.Document.Blocks.Add(new Paragraph(new Run(text)));
}
public static string GetText(this RichTextBox richTextBox)
{
return new TextRange(richTextBox.Document.ContentStart,
richTextBox.Document.ContentEnd).Text;
}
}
Pourquoi ne pas faire ce qui suit:
_richTextBox.SelectAll();
string myText = _richTextBox.Selection.Text;
"Extended WPF Toolkit" fournit maintenant une richtextbox avec la propriété Text.
Vous pouvez obtenir ou définir le texte dans différents formats (XAML, RTF et texte en clair).
Voici le lien: Extended WPF Toolkit RichTextBox
Dans mon cas, je devais convertir un texte RTF en texte brut: et mettre mon code dans une méthode d'extension:
public static string RTFToPlainText(this string s)
{
// for information : default Xceed.Wpf.Toolkit.RichTextBox formatter is RtfFormatter
Xceed.Wpf.Toolkit.RichTextBox rtBox = new Xceed.Wpf.Toolkit.RichTextBox(new System.Windows.Documents.FlowDocument());
rtBox.Text = s;
rtBox.TextFormatter = new Xceed.Wpf.Toolkit.PlainTextFormatter();
return rtBox.Text;
}