#c# #.net #wpf #windows
Вопрос:
Мне нужно создать приложение для Windows, то есть текстовый процессор, который предлагает пользователю синонимы слов, которые он ввел. Это должно работать в целом документе, с несколькими предложениями, с заданием, созданным и отображаемым в виде всплывающего окна или контекстного меню, только когда пользователь щелкает правой кнопкой мыши по слову. Я верю, что у меня должно быть каждое слово как отдельный объект, чтобы я мог подписаться на событие RMBClick, а затем заполнить всплывающее окно и показать его. Проблема в том, что я не знаю, как сделать каждое слово, которое вводит пользователь, отдельным объектом. Есть ли чистое решение? Я думаю, что проблема похожа на проблему проверки орфографии
Комментарии:
1. Ты можешь это сделать
Split(' ')
?2. Я имею в виду, что я имею в виду, учитывая текстовое поле (или RichTexBox) с предложением внутри него, как я могу узнать, на какое слово пользователь щелкнул правой кнопкой мыши? Я думал, что каждое слово должно быть отдельным элементом пользовательского интерфейса, чтобы я мог подписаться на событие OnClick. Но я не знаю, какие типы элементов использовать и как обрабатывать необработанный пользовательский ввод, чтобы сделать его надежным при написании, удалении и вставке текста в предложения…
3. Пожалуйста, уточните и покажите, какой текстовый элемент управления вы используете
Ответ №1:
При использовании RichTextBox
вы можете получить значение TextPointer
, указывающее ближайшую позицию вставки для указанной точки, позвонив RichTextBox.GetPositionFromPoint
. Проверьте текстовое содержимое, используя полученное TextPointer
.
При использовании TextBox
вы можете получить индекс символа, который находится ближе всего к указанной точке, позвонив TextBox.GetCharacterIndexFromPoint
. Проверьте текстовое содержимое, используя полученный индекс.
Проверка текста в этом случае означает поиск начала и конца слова в текущей позиции/индексе (границы слов).