2013-03-04 59 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