RichTextBox (WPF) не имеет строкового свойства «Текст»
Я пытаюсь установить / получить текст моего RichTextBox, но текст не входит в список его свойств, когда я хочу получить test.Text …
Я использую код в C # (.net framework 3.5 SP1)
RichTextBox test = new RichTextBox();
не может быть test.Text(?)
- Как разместить содержимое WPF в приложениях MFC?
- WPF: Как сделать автоматическое изменение размера canvasа?
- Как получить детей из контейнера WPF по типу?
- Как реализовать воздушное сообщение в приложении WPF
- WPF StringFormat на содержании ярлыков
Вы знаете, как это возможно?
- Содержимое стиля кнопки отображается только в одном экземпляре Button
- Автозаполнение текстового поля в WPF
- программно добавлять столбцы и строки в WPF Datagrid
- Форматирование текста в TextBlock
- Получить элемент doubleclick event listview
- Как отображать элементы в Canvas через Binding
- Где можно найти бесплатный текстовый файл в текстовом поле WPF?
- ItemsControl с горизонтальной ориентацией
для установки текста RichTextBox:
richTextBox1.Document.Blocks.Clear(); richTextBox1.Document.Blocks.Add(new Paragraph(new Run("Text")));
для получения текста RichTextBox:
string richText = new TextRange(richTextBox1.Document.ContentStart, richTextBox1.Document.ContentEnd).Text;
Существовала путаница между RichTextBox в System.Windows.Forms и в System.Windows.Control
Я использую один в элементе управления, поскольку я использую 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; }
В элементе управления WPT RichTextBox нет свойства Text
. Вот один из способов получить весь текст:
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);
ИЛИ
rtf.Selection.Text = yourText;
Используя два метода расширения, это становится очень простым:
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.SelectAll(); string myText = _richTextBox.Selection.Text;
«Extended WPF Toolkit» теперь предоставляет richtextbox с свойством Text.
Вы можете получить или установить текст в разных форматах (XAML, RTF и открытый текст).
Вот ссылка: Extended WPF Toolkit RichTextBox
В моем случае мне пришлось превратить 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; }
В соответствии с этим он имеет свойство Text
http://msdn.microsoft.com/en-us/library/system.windows.forms.richtextbox_members.aspx
Вы также можете попробовать свойство «Линии», если хотите, чтобы текст разбился как строки.