C # Obtenir la ligne du curseur dans RichTextBox

En C #, j’ai un RichTextBox et je veux obtenir la ligne actuelle du curseur. Chaque réponse que j’ai trouvée dit d’utiliser:

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

Cependant, richTextBox1.SelectionStart n’est mis à jour que lorsque vous apportez des modifications au texte. Si vous déplacez le curseur avec les touches de direction, il ne se met pas à jour (je l’ai vérifié en imprimant SelectionStart au fur et à mesure que je me déplace).

Comment puis-je obtenir la ligne actuelle du curseur, de manière à la suivre même si vous utilisez les touches fléchées pour déplacer le curseur?

J’utilise VS2012 dans Win8.

Edit: la réponse de terrybozzio a montré le problème. Pour quiconque ayant ce problème, vous ne pouvez pas mettre le code dans richTextBox1_TextChanged. Vous devez le mettre dans richTextBox1_SelectionChanged.

Vous devez d’abord sélectionner selectionstart. S’il n’y a pas de texte sélectionné, la valeur renvoyée correspond à la position du curseur (avec décalage en caractères depuis le début du texte), puis vous appelez getlinefromcharindex et transmettez cette valeur, puis placez-la dans l’événement selectionchanged et même avec les touches fléchées déplaçant la position du curseur, il se mettra à jour:

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