WPF, Ввод текста, каждое слово как отдельный объект

#c# #.net #wpf #windows

Вопрос:

Мне нужно создать приложение для Windows, то есть текстовый процессор, который предлагает пользователю синонимы слов, которые он ввел. Это должно работать в целом документе, с несколькими предложениями, с заданием, созданным и отображаемым в виде всплывающего окна или контекстного меню, только когда пользователь щелкает правой кнопкой мыши по слову. Я верю, что у меня должно быть каждое слово как отдельный объект, чтобы я мог подписаться на событие RMBClick, а затем заполнить всплывающее окно и показать его. Проблема в том, что я не знаю, как сделать каждое слово, которое вводит пользователь, отдельным объектом. Есть ли чистое решение? Я думаю, что проблема похожа на проблему проверки орфографии

Комментарии:

1. Ты можешь это сделать Split(' ') ?

2. Я имею в виду, что я имею в виду, учитывая текстовое поле (или RichTexBox) с предложением внутри него, как я могу узнать, на какое слово пользователь щелкнул правой кнопкой мыши? Я думал, что каждое слово должно быть отдельным элементом пользовательского интерфейса, чтобы я мог подписаться на событие OnClick. Но я не знаю, какие типы элементов использовать и как обрабатывать необработанный пользовательский ввод, чтобы сделать его надежным при написании, удалении и вставке текста в предложения…

3. Пожалуйста, уточните и покажите, какой текстовый элемент управления вы используете

Ответ №1:

При использовании RichTextBox вы можете получить значение TextPointer , указывающее ближайшую позицию вставки для указанной точки, позвонив RichTextBox.GetPositionFromPoint . Проверьте текстовое содержимое, используя полученное TextPointer .

При использовании TextBox вы можете получить индекс символа, который находится ближе всего к указанной точке, позвонив TextBox.GetCharacterIndexFromPoint . Проверьте текстовое содержимое, используя полученный индекс.

Проверка текста в этом случае означает поиск начала и конца слова в текущей позиции/индексе (границы слов).