Как получить CaretPosition на текстовое поле, используя GetCaretPos? Или любой другой метод? - PullRequest
0 голосов
/ 15 июля 2011

Я пытаюсь создать новое приложение на c #, в качестве части этого я хочу узнать позицию каретки [Точная точка в элементе управления] в поле управления расширенным текстом.

я будуобъясните это, ПРИНЯТЬ: у меня есть выигрышная форма, поле расширенного текстового управления и контекстное меню.

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

дляЭто я хочу знать точную точку вставки в этом текстовом поле.

В результате поиска в Google + Soft статей я нашел способ через GetCaretPos,

Но я не могу его использовать.

я что-то сделал с функциями get richtextbox, одна из них следующая.

Point k= richTextBox1.GetPositionFromCharIndex((richTextBox1.Lines[richTextBox1.GetLineFromCharIndex(richTextBox1.GetFirstCharIndexOfCurrentLine())].Count() + 1));

Не знаю, точная точка это или нет, но иногда я получаю правильное значение.

Как я могу ИСПРАВИТЬ ПРОБЛЕМУ?

я проверял некоторые SOF ПОЗИЦИИ, НО Я НЕ МОГУ ПОЛУЧИТЬ МОЮ ПРОБЛЕМУ, ПОЧЕМУ ТАК, ПОЧЕМУ ПОЛУЧИЛСЯ СНОВА С ДРУГИМИ ДЕТАЛЯМИ, пожалуйста, не принимайте это как репост.

Спасибо.

1 Ответ

1 голос
/ 15 июля 2011

Вот быстрый способ увидеть, где появится контекстное меню. (Убедитесь, что вы подписались на событие.; -)

  private void richTextBox1_SelectionChanged(object sender, EventArgs e)
  {
     Point point = richTextBox1.GetPositionFromCharIndex(richTextBox1.SelectionStart);
     Text = point.ToString ();// Write to window title for fun
     new ContextMenu(new MenuItem[] {new MenuItem("test")}).Show (richTextBox1, point);
  }
...