89 / 77 / 38
Регистрация: 11.10.2015
Сообщений: 860
1

Свойства RichTextBox, миграция с WindowsForms

26.05.2017, 17:02. Показов 765. Ответов 3
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Партирую академическую программу с WinForm в WPF, возник вопрос:
Код в WinForms
C#
1
2
3
4
5
6
7
8
9
10
11
12
 private void AddMessage(string Content,string Color = "Black")
        {
            if(InvokeRequired)
            {
                Invoke(_addMessage,Content,Color);
                return;
            }
            chatBox.SelectionStart = chatBox.TextLength;
            chatBox.SelectionLength = Content.Length;
            chatBox.SelectionColor = getColor(Color);
            chatBox.AppendText(Content + Environment.NewLine);
        }
А вот в WPF я не нашел свойств SelectionStart, SelectionColor и тд..
Как мне изменить код?
WPF
C#
1
2
3
4
5
6
7
8
9
10
11
12
  private void AddMessage(string Content, string Color = "Black")
        {
            if (Dispatcher.CheckAccess()) // InvokeRequired
            {
                Dispatcher.Invoke(_addMessage, Content, Color);
                return;
            }
           // chatBox.SelectionStart = chatBox.TextLength;
           //chatBox.SelectionLength = Content.Length;
            //chatBox.SelectionColor = getColor(Color);
            chatBox.AppendText(Content + Environment.NewLine);
        }
Добавлено через 2 часа 7 минут
Нашел в недрах сети такое решение, но что оно делает, не понимаю. Плюс не понятно, что такое Token.
И как из метода получать необходимые мне свойства?
C#
1
2
3
4
5
6
7
8
9
10
11
12
        private void _highlightTokens(FlowDocument document)
        {
            TextRange fullRange = new TextRange(document.ContentStart, document.ContentEnd);
            fullRange.ClearAllProperties(); // NOTICE: first remove allProperties.
            foreach (Token token in _tokenizer.GetTokens(fullRange.Text).Reverse()) // NOTICE: Reverse() to make the "right to left" work
            {
                TextPointer start = fullRange.Start.GetPositionAtOffset(token.Position);
                TextPointer end = start.GetPositionAtOffset(token.Length);
                TextRange range = new TextRange(start, end);
                range.ApplyPropertyValue(TextElement.ForegroundProperty, _getTokenColor(token));
            }
        }
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
26.05.2017, 17:02
Ответы с готовыми решениями:

Как переопределить свойства RichTextbox
Rich Textbox (RTB) используется только для отображения форматированного текста и никак не должен...

Как для стандартного RichTextBox создать свои дополнительные свойства
Для примера, возьмем стандартный метод для RichTextBox richTextBox1.ForeColor = Color.Red; ...

RichTextBox. Как можно аккумулировать свойства Font в отдельной переменной
Возможно я написал глупость, но вот что хочу получить: Есть RichTextBox; Есть переменная Font...

Есть ли в элементе RichTextBox такие свойства как Copy, Cut, Paste
Или если их нет то каким образом можно вырезать, копировать, вставлять текст в этом элементе

3
Эксперт .NET
12087 / 8365 / 1279
Регистрация: 21.01.2016
Сообщений: 31,542
27.05.2017, 06:30 2
Jman, классные вы вопросы задаёте Что такое chatBox? Это TextBox или какой-то кастомный контрол? Что такое _tokenizer? Какие вас свойства нужно получить из метода разукрашивающего текст в каком-то контроле?..
0
89 / 77 / 38
Регистрация: 11.10.2015
Сообщений: 860
27.05.2017, 20:40  [ТС] 3
chatBox это RichTextBox. Мне необходимо первый метод просто перенести из WinForms в проект WPF. В WPF свойства SelectionStart, SelectionLength, SelectionColor отсутствуют. Метод с _tokenizer нашел как есть на stack overflow. Ссылку не буду прилагать, а то не по правилам как вроде.
0
HF
1154 / 740 / 181
Регистрация: 09.09.2011
Сообщений: 2,299
Записей в блоге: 2
01.06.2017, 02:13 4
Цитата Сообщение от Jman Посмотреть сообщение
Партирую академическую программу с WinForm в WPF, возник вопрос:
Сначала объясните что должен делать этот метод, тогда будет понятно в чём помогать.
А пока можете посмотреть RichTextBox из WPF. Там есть всё что вам нужно.
0
01.06.2017, 02:13
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
01.06.2017, 02:13
Помогаю со студенческими работами здесь

При любой смене размера richTextBox-а растянуть текст на весь richTextBox
есть richTextBox нужно вывести текст и при любой смене размера richTextBox растянуть этот текст на...

Специальные символы в RichTextBox не учитываются при передаче в другой RichTextBox
Если мы зададим richTextBox1.Text = "123\n123"; мы увидим 123 123 но если мы зададим...

RichTextBox ерунда в строках после вордИскажение форматирования при вставке текста в RichTextBox из MS Word
Суть в следующем: 1) Имеется статья формата doc (заголовки, абзацы, списки) 2) Копируется текст...

WPF RichTextBox.Selection.Start vs RichTextBox.SelectionStart
В стандартном RichTextBox`е от WindowsForms есть свойства SelectionStart(int index),...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru