是否可以通过编程方式在WPF中的TextBox
元素内获取特定行的起始处的脱字号索引?从文本框获取索引C#
例如,第20行中进行选择:
my_textbox.GetLineIndex(20);
我希望得到这个信息,这样我就可以用这个作为一个my_textbox.SelectionStart
值。
有my_textbox.ScrollToLine(20)
,但这并不给我的索引,我不认为?
是否可以通过编程方式在WPF中的TextBox
元素内获取特定行的起始处的脱字号索引?从文本框获取索引C#
例如,第20行中进行选择:
my_textbox.GetLineIndex(20);
我希望得到这个信息,这样我就可以用这个作为一个my_textbox.SelectionStart
值。
有my_textbox.ScrollToLine(20)
,但这并不给我的索引,我不认为?
我不认为有内置的方式,但你可以尝试这样的扩展方法。
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();
}
完美,谢谢!我忘记了一个字符串只是一个字符数组! – Luke 2013-03-04 16:25:19
您可以使用按钮单击多行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());
请考虑添加关于您的代码如何解决OP问题的解释。 – 2017-01-09 14:23:11
如果一个线滚出文本框的结束到下一个?您是否想将其作为第二行或仅将CR + LF对计为换行符? – Belogix 2013-03-04 15:23:09
@Belogix我想只将CR + LF作为换行符。谢谢:) – Luke 2013-03-04 15:30:25