/ / C # Uzyskaj linię kursora w RichTextBox - c #, kursor, richtextbox, numery linii

C # Pobierz linię kursora w RichTextBox - c #, kursor, richtextbox, numery linii

W języku C # mam RichTextBox i chcę uzyskać bieżącą linię kursora. Każda odpowiedź, którą znalazłem, mówi:

int currentLine = richTextBox1.GetLineFromCharIndex(richTextBox1.SelectionStart);

Jednak richTextBox1.SelectionStart aktualizuje się tylko po wprowadzeniu zmian w tekście. Przesunięcie kursora za pomocą klawiszy strzałek nie powoduje aktualizacji (zweryfikowałem to, drukując SelectionStart podczas poruszania się).

Jak uzyskać bieżącą linię kursora w sposób, który ją śledzi, nawet jeśli poruszasz kursorem za pomocą klawiszy strzałek?

Używam VS2012 w Win8.

Edytować: Odpowiedź terrybozzio pokazała problem. Dla każdego, kto ma ten problem, nie możesz umieścić kodu w richTextBox1_TextChanged. Musisz umieścić go w richTextBox1_SelectionChanged.

Odpowiedzi:

4 dla odpowiedzi № 1

Najpierw musisz zacząć selekcję, jeśli istniejenie jest dowolny zaznaczony tekst, zwracana wartość to pozycja karetki (z przesunięciem znaków od początku tekstu), a następnie wywołujesz getlinefromcharindex i przekazujesz tę wartość, umieszczasz ją w zdarzeniu zmienionym zaznaczeniem, a nawet używając klawiszy strzałek przesuwających pozycję karetki zaktualizuje:

private void richTextBox1_SelectionChanged(object sender, EventArgs e)
{
int index = richTextBox1.SelectionStart;
int line = richTextBox1.GetLineFromCharIndex(index);
label1.Text = "cursor at line " + line.ToString();
}