2013-03-04 88 views
4

是否可以通過編程方式在WPF中的TextBox元素內獲取特定行的起始處的脫字號索引?從文本框獲取索引C#

例如,第20行中進行選擇:

my_textbox.GetLineIndex(20); 

我希望得到這個信息,這樣我就可以用這個作爲一個my_textbox.SelectionStart值。

my_textbox.ScrollToLine(20),但這並不給我的索引,我不認爲?

+1

如果一個線滾出文本框的結束到下一個?您是否想將其作爲第二行或僅將CR + LF對計爲換行符? – Belogix 2013-03-04 15:23:09

+0

@Belogix我想只將CR + LF作爲換行符。謝謝:) – Luke 2013-03-04 15:30:25

回答

3

我不認爲有內置的方式,但你可以嘗試這樣的擴展方法。

public static int GetLineIndex(this TextBox textbox, int line) 
{ 
    var text = textbox.Text; 
    var thisLine = 0; 
    for (var i = 0; i < text.Length; i++) 
    { 
     if (thisLine == line) 
      return i; 

     if (text[i] == '\n') 
      ++thisLine; 
    } 

    throw new ArgumentOutOfRangeException(); 
} 
+0

完美,謝謝!我忘記了一個字符串只是一個字符數組! – Luke 2013-03-04 16:25:19

0

您可以使用按鈕單擊多行TextBox

 string findText = "sample"; 
     int charIndex = txtSource.Text.IndexOf(findText); 

     MessageBox.Show(txtSource.GetLineFromCharIndex(charIndex).ToString()); 

     or 
     MessageBox.Show(txtSource.GetLineFromCharIndex(txtSource.Text.IndexOf("sample")).ToString()); 
+0

請考慮添加關於您的代碼如何解決OP問題的解釋。 – 2017-01-09 14:23:11