2013-07-21 17 views
6

In .NET können Sie leicht die Zeilennummer der Cursorposition eines TextBox (dh die „aktuelle Zeile“) erhalten, indem GetLineFromCharIndex und SelectionStart mit:Einstellen der aktuellen Zeile des Cursors auf einem .NET TextBox

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

gibt es eine „clean/native“ Art und Weise zu in einer bestimmten Zeile eines Textbox den Cursor gesetzt (dh setzen Sie die „aktuelle Zeile“)? Oder zumindest eine "clean/native" Möglichkeit, den char-Index des ersten Zeichens einer gegebenen Zeile zu erhalten (etwas wie getCharIndexFromLine, das Gegenteil von der Funktion, die ich vorher gesetzt habe)?

Ein Weg, es zu tun, um ihre Längen Iterieren über die ersten N-1 Elemente der Lines Eigenschaft der TextBox und Summieren und die Längen der Zeilenumbrüche beinhalten würde. Irgendeine andere Idee?

Antwort

4

Es gibt eine GetFirstCharIndexFromLine() Funktion, die verfügbar ist:

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

+1 diese Antwort akzeptiert werden sollte. – Neolisk

+0

Ich habe diese Funktion nicht gesehen: S Jetzt scheint meine Frage albern. Wie auch immer, danke für die Hilfe! Genau das, was ich brauchte :) – Racso

1

Dies war das Beste, was ich tun konnte:

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); 
} 

Wenn Sie zählen Linien bei 0 entfernen Sie das line -= 1; Segment zu starten.

Verwandte Themen