текущий номер строки изменил событие, если vb.net - PullRequest
1 голос
/ 07 февраля 2010

Как я могу сделать некоторый код, когда пользователь меняет, на какой строке находится каретка?

так что-то вроде:

sub textbox1_lineindexchanged (byval ....) Handles Textbox1.Lineindexchanged
  'do code based on the current line
end sub

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

Ответы [ 3 ]

0 голосов
/ 07 февраля 2010

Я предполагаю, что вы используете Windows Forms, поэтому мой ответ основан на этом. Если вы используете ASP.NET, вам нужно будет сделать это с помощью JavaScript, и я понятия не имею, как / если это возможно.

В Windows Forms вы можете создать обработчик событий для событий KeyUp и MouseUp, но нет события SelectionChanged. Если вы переключитесь на использование RichTextBox, у вас будет доступ к событию SelectionChanged .

В этом случае вы должны использовать свойство SelectionStart текстового поля и передать его в метод GetLineFromCharIndex , который даст вам номер строки. Надеюсь, это поможет.

0 голосов
/ 07 февраля 2010

Я сомневаюсь, что есть что-то более элегантное, чем проверка свойства SelectionStart из обработчиков KeyPress, Click и TextChanged.

0 голосов
/ 07 февраля 2010

Нет способа сделать это с ванильным экземпляром WinForms TextBox. Он не раскрывает никакой информации о карете. Единственный способ сделать это - подкласс TextBox, переопределить WndProc и специально обрабатывать сообщения о перемещении каретки (если такие сообщения существуют).

Какого поведения вы пытаетесь достичь здесь? Может быть другой способ достичь этого.

...