Получить позицию выделенного текста в строке в текстовом поле
Хорошо, я пытаюсь сделать что-то немного конкретное здесь. Я хочу получить местоположение выделенного текста в текстовом поле.
Чтобы уточнить - я могу использовать местоположение, чтобы выбрать текст. Если у меня есть textBox1, я мог бы сделать:
textBox1.SelectionStart = 1;
textBox1.SelectionLength = 4;
Это будет начинаться со второй буквы и выбрать 4 буквы.
То, что я хочу сделать, - это наоборот: когда пользователь выбирает текст, я хочу узнать, что такое начало и какова длина (или каков начало и каков конец. Либо будет работать).
Я думал только о поиске строки для выбранного текста (textBox1.SelectedText). Проблема возникает, если это общее слово или строка, которая используется несколько раз. Например.
Это кот. Это кот. Это кот.
Если они выбирают второе предложение, использование SelectedText для поиска строки по этому конкретному предложению мне не поможет. Это может быть любой из 3.
Итак, мой вопрос: когда пользователь нажимает кнопку, как мне определить точные элементы, которые выбрал пользователь, чтобы впоследствии я мог манипулировать этими конкретными элементами? Важно отметить более позднюю часть - я, вероятно, захочу не только манипулировать текстом при нажатии кнопки. Я также хочу манипулировать этим позже, в то время, когда текст больше не может быть выделен. Это означает, что я захочу сохранить что-то, чтобы сказать мне, с какими конкретными частями предложения я имею дело. Если это решение не является жизнеспособным, есть ли решение, о котором вы можете подумать, где в приведенном выше примере "это кошка" пользователь мог выбрать второе предложение, нажать кнопку, а затем позже я узнаю, какое предложение было выбрано когда он нажал эту кнопку?
2 ответа
Согласно документации, SelectionStart
а также SelectionLength
можно как установить, так и прочитать. Просто используйте их.
Вам даже не нужно знать положение выделенного текста, чтобы манипулировать ими, чтобы редактировать текст, который вы выбрали в тексте, вы можете просто установить SelectedText
Свойство для нового отредактированного значения.
// if textBox1.text = "Hello World World"; with first "World" selected
textBox1.SelectedText = textBox1.SelectedText.Replace("World", "Raj");
// then it becomes "Hello Raj World"