2013-07-21 10 views
6

Trong .NET, bạn có thể dễ dàng có được số dòng của vị trí con trỏ của một TextBox (tức là "dòng hiện tại") bằng cách sử dụng GetLineFromCharIndexSelectionStart:Thiết dòng hiện hành của con trỏ trên một TextBox NET

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

Có cách "sạch/gốc" để đặt con trỏ trong một dòng nhất định là Textbox (tức là đặt "dòng hiện tại")? Hoặc ít nhất là một "sạch/bản địa" cách để có được chỉ số char của ký tự đầu tiên của một dòng nhất định (một cái gì đó như getCharIndexFromLine, đối diện của hàm tôi đặt trước)?

Một cách để thực hiện việc này sẽ liên quan đến việc lặp qua các thành phần N-1 đầu tiên của thuộc tính Lines của số TextBox và tổng chiều dài của chúng cộng với độ dài của dấu ngắt dòng. Bạn có ý tưởng nào khác không?

Trả lời

4

Có một chức năng GetFirstCharIndexFromLine() có sẵn:

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

+1 này nên được chấp nhận câu trả lời. – Neolisk

+0

Tôi không thấy chức năng đó: S Bây giờ câu hỏi của tôi có vẻ ngớ ngẩn. Dù sao, nhờ sự giúp đỡ! Đó chính xác là những gì tôi cần :) – Racso

1

Đây là tốt nhất mà tôi có thể đưa ra:

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

Nếu bạn muốn bắt đầu đếm dòng ở 0 loại bỏ các phân khúc line -= 1;.