C# 从文本框C获取行的索引#

C# 从文本框C获取行的索引#,c#,wpf,textbox,C#,Wpf,Textbox,这是一种以编程方式获取WPF中TextBox元素中特定行开头的插入符号索引的方法吗 例如,要选择第20行: my_textbox.GetLineIndex(20); 我希望获得此信息,以便将其用作my\u文本框。选择Start值 有my_textbox.ScrollToLine(20),但这没有给我我不认为的索引?我认为没有内置的方法,但你可以尝试这样的扩展方法 public static int GetLineIndex(this TextBox textbox, int line) {

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

例如,要选择第20行:

my_textbox.GetLineIndex(20);
我希望获得此信息,以便将其用作
my\u文本框。选择Start


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();
}
public static int GetLineIndex(此文本框,int行)
{
var text=textbox.text;
var thisLine=0;
for(var i=0;i
您可以使用按钮单击多行文本框

        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());

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

有关此功能的更多信息,请访问:

这将根据需要在行的开头返回插入符号索引

int startIndex = my_textbox.GetCharacterIndexFromLineIndex(lineNumber);

如果一行从文本框的末尾滚动到下一行怎么办?你想把它算作第二行还是只把CR+LF对算作换行符?@Belogix我想把CR+LF对算作换行符。谢谢:)太好了,谢谢你!我忘了字符串只是一个字符数组!请考虑对代码如何解决OP问题添加解释。