Ich versuche, den Text meiner RichTextBox festzulegen/zu erhalten, aber Text ist nicht in der Liste seiner Eigenschaften, wenn ich test.Text ...
Ich verwende Code hinter C # (.net Framework 3.5 SP1)
RichTextBox test = new RichTextBox();
kann test.Text(?)
nicht haben
Wissen Sie, wie es möglich sein kann?
zu set RichTextBox Text:
richTextBox1.Document.Blocks.Clear();
richTextBox1.Document.Blocks.Add(new Paragraph(new Run("Text")));
zu get RichTextBox-Text:
string richText = new TextRange(richTextBox1.Document.ContentStart, richTextBox1.Document.ContentEnd).Text;
Es gab eine Verwirrung zwischen RichTextBox in System.Windows.Forms und in System.Windows.Control
Ich verwende die in der Steuerung, während ich WPF verwende. Dort gibt es keine Texteigenschaft, und um einen Text zu erhalten, hätte ich diese Zeile verwenden sollen:
string myText = new TextRange(transcriberArea.Document.ContentStart, transcriberArea.Document.ContentEnd).Text;
vielen Dank
Die WPF RichTextBox verfügt über eine Document
-Eigenschaft zum Festlegen des Inhalts 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;
Sie können jedoch nur die AppendText
-Methode verwenden, wenn Sie danach nur noch danach suchen.
Hoffentlich hilft das.
string GetString(RichTextBox rtb)
{
var textRange = new TextRange(rtb.Document.ContentStart, rtb.Document.ContentEnd);
return textRange.Text;
}
Im WPF RichTextBox-Steuerelement gibt es keine Text
-Eigenschaft. Hier ist eine Möglichkeit, den gesamten Text herauszuholen:
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;
Mit zwei Erweiterungsmethoden wird dies sehr einfach:
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;
}
}
Wie wäre es, wenn Sie Folgendes tun:
_richTextBox.SelectAll();
string myText = _richTextBox.Selection.Text;
"Extended WPF Toolkit" enthält jetzt eine Richtextbox mit der Text-Eigenschaft.
Sie können den Text in verschiedenen Formaten (XAML, RTF und Klartext) abrufen oder einstellen.
Hier der Link: Erweitertes WPF-Toolkit RichTextBox
In meinem Fall musste ich a RTF Text in Klartext umwandeln: Was ich (mithilfe von Xceed WPF Toolkit) wie in der GiangLP-Antwort tat; und meinen Code in einer Erweiterungsmethode einstellen:
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;
}