2013-07-21 12 views
6

W .NET, można łatwo dostaćliczba linii położenia kursora z TextBox (czyli „aktualnej linii”) za pomocą GetLineFromCharIndex i SelectionStart:Ustawianie bieżącej linii kursora w sprawie TextBox .NET

var currentLine = textBox1.GetLineFromCharIndex(textBox1.SelectionStart); 

Czy istnieje „czysta/native” sposobem ustawić kursor na danej linii z Textbox (czyli ustawić „bieżącą linię”)? Lub przynajmniej "czysty/natywny" sposób uzyskania indeksu znaków pierwszego znaku danej linii (coś w stylu: getCharIndexFromLine, przeciwieństwo funkcji, którą umieściłem wcześniej)?

sposób zrobić to wiązałoby iteracji po pierwszych N-1 elementów majątku TextBoxLines i zsumowanie ich długości plusa długości podziału wierszy. Każdy inny pomysł?

Odpowiedz

4

Jest GetFirstCharIndexFromLine() funkcja, która jest dostępna:

int myLine = 3; 
int pos = textBox1.GetFirstCharIndexFromLine(myLine); 
if (pos > -1) { 
    textBox1.Select(pos, 0); 
} 
+1

+1 ten powinien zostać przyjęty odpowiedź. – Neolisk

+0

Nie widziałem tej funkcji: S Teraz moje pytanie wydaje się głupie. W każdym razie, dzięki za pomoc! To dokładnie to, czego potrzebowałem :) – Racso

1

To było najlepsze co mogłem wymyślić:

private void SetCursorLine(TextBox textBox, int line) 
{ 
    int seed = 0, pos = -1; 
    line -= 1; 

    if(line == 0) pos = 0; 
    else 
     for (int i = 0; i < line; i++) 
     { 
      pos = textBox.Text.IndexOf(Environment.NewLine, seed) + 2; 
      seed = pos; 
     } 

    if(pos != -1) textBox.Select(pos, 0); 
} 

Jeśli chcesz rozpocząć liczenie linii na 0 usunąć segment line -= 1;.

Powiązane problemy