RichTextBox (WPF) не имеет строкового свойства "Текст"
Я пытаюсь установить/получить текст моего RichTextBox, но текст не входит в список его свойств, когда я хочу получить test.Text...
Я использую код в С# (.net framework 3.5 SP1)
RichTextBox test = new RichTextBox();
не может иметь test.Text(?)
Вы знаете, как это возможно?
Ответы
Ответ 1
до установите текст RichTextBox:
richTextBox1.Document.Blocks.Clear();
richTextBox1.Document.Blocks.Add(new Paragraph(new Run("Text")));
to получить текст RichTextBox:
string richText = new TextRange(richTextBox1.Document.ContentStart, richTextBox1.Document.ContentEnd).Text;
Ответ 2
В RichTextBox возникла путаница в System.Windows.Forms и в System.Windows.Control
Я использую этот элемент в элементе управления, поскольку я использую WPF. Там нет свойства Text, и для того, чтобы получить текст, я должен был использовать эту строку:
string myText = new TextRange(transcriberArea.Document.ContentStart, transcriberArea.Document.ContentEnd).Text;
спасибо
Ответ 3
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
, хотя если это все, что вам нужно.
Надеюсь, что это поможет.
Ответ 4
string GetString(RichTextBox rtb)
{
var textRange = new TextRange(rtb.Document.ContentStart, rtb.Document.ContentEnd);
return textRange.Text;
}
Ответ 5
В элементе управления WPT RichTextBox нет свойства Text
. Вот один из способов получить весь текст:
TextRange range = new TextRange(myRTB.Document.ContentStart, myRTB.Document.ContentEnd);
string allText = range.Text;
Ответ 6
RichTextBox rtf = new RichTextBox();
System.IO.MemoryStream stream = new System.IO.MemoryStream(ASCIIEncoding.Default.GetBytes(yourText));
rtf.Selection.Load(stream, DataFormats.Rtf);
ИЛИ
rtf.Selection.Text = yourText;
Ответ 7
Используя два метода расширения, это становится очень простым:
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;
}
}
Ответ 8
Как сделать следующее:
_richTextBox.SelectAll();
string myText = _richTextBox.Selection.Text;
Ответ 9
"Extended WPF Toolkit" теперь предоставляет richtextbox с свойством Text.
Вы можете получить или установить текст в разных форматах (XAML, RTF и открытый текст).
Вот ссылка: Расширенные WPF Toolkit RichTextBox
Ответ 10
В моем случае мне пришлось превратить RTF-текст в обычный текст: что я сделал (используя Xceed WPF Toolkit), как в ответе GiangLP; и установка моего кода в методе расширения:
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;
}
Ответ 11
В соответствии с этим он имеет свойство Text
http://msdn.microsoft.com/en-us/library/system.windows.forms.richtextbox_members.aspx
Вы также можете попробовать свойство "Линии", если хотите, чтобы текст разбился как строки.