TextBox
是一种以编程方式获取WPF 中元素内特定行开头的插入符号索引的方法吗?
例如,要选择第 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();
}
您只需使用“GetCharacterIndexFromLineIndex”函数即可在特定行的开头获取插入符号索引。
您可以在以下位置查看有关此函数的更多信息:GetCharacterIndexFromLineIndex 的 Microsoft 文档
这将根据需要在行首返回插入符号索引。
int startIndex = my_textbox.GetCharacterIndexFromLineIndex(lineNumber);
您可以使用按钮单击多行文本框
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());