4

TextBox是一种以编程方式获取WPF 中元素内特定行开头的插入符号索引的方法吗?

例如,要选择第 20 行:

my_textbox.GetLineIndex(20);

我希望获取此信息,以便我可以将其用作my_textbox.SelectionStart值。

my_textbox.ScrollToLine(20),但这并没有给我我不认为的索引?

4

3 回答 3

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();
}
于 2013-03-04T15:25:54.763 回答
1

您只需使用“GetCharacterIndexFromLineIndex”函数即可在特定行的开头获取插入符号索引。

您可以在以下位置查看有关此函数的更多信息:GetCharacterIndexFromLineIndex 的 Microsoft 文档

这将根据需要在行首返回插入符号索引。

int startIndex = my_textbox.GetCharacterIndexFromLineIndex(lineNumber);
于 2020-07-17T08:59:07.593 回答
1

您可以使用按钮单击多行文本框

        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());
于 2017-01-09T14:04:10.193 回答