RichTextBoxのテキストを設定/取得しようとしていますが、test.Textを取得したいときに、Textがプロパティのリストに含まれていません...
C#(.net framework 3.5 SP1)でコードビハインドを使用しています
RichTextBox test = new RichTextBox();
test.Text(?)
を持つことはできません
どうしてそれが可能になるのか知っていますか?
to set RichTextBoxテキスト:
richTextBox1.Document.Blocks.Clear();
richTextBox1.Document.Blocks.Add(new Paragraph(new Run("Text")));
to get RichTextBoxテキスト:
string richText = new TextRange(richTextBox1.Document.ContentStart, richTextBox1.Document.ContentEnd).Text;
System.Windows.Forms と System.Windows.Control のRichTextBoxには混乱がありました
WPFを使用しているので、コントロールのコントロールを使用しています。そこには、Textプロパティはありません。テキストを取得するには、次の行を使用する必要があります。
string myText = new TextRange(transcriberArea.Document.ContentStart, transcriberArea.Document.ContentEnd).Text;
ありがとう
WPF RichTextBoxには、コンテンツを設定するためのDocument
プロパティがあります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;
あとは、AppendText
メソッドだけを使用できます。
お役に立てば幸いです。
string GetString(RichTextBox rtb)
{
var textRange = new TextRange(rtb.Document.ContentStart, rtb.Document.ContentEnd);
return textRange.Text;
}
WPF RichTextBoxコントロールにはText
プロパティはありません。すべてのテキストを出力する1つの方法を次に示します。
TextRange range = new TextRange(myRTB.Document.ContentStart, myRTB.Document.ContentEnd);
string allText = range.Text;
2つの拡張メソッドを使用すると、これは非常に簡単になります。
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;
}
}
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;
次のようにしてください:
_richTextBox.SelectAll();
string myText = _richTextBox.Selection.Text;
「拡張WPFツールキット」は、リッチテキストボックスにTextプロパティを提供します。
さまざまな形式(XAML、RTFおよびプレーンテキスト)でテキストを取得または設定できます。
リンクは次のとおりです。 Extended WPF Toolkit RichTextBox
私の場合、RTFテキストをプレーンテキストに変換する必要がありました。GiangLPの回答のように(Xceed WPF Toolkitを使用して)したことです。拡張メソッドで私のコードを設定する:
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;
}