如何在richTextBox中获取特定文本的行?

时间:2012-11-23 10:23:57

标签: c# winforms

我有一个富文本框,里面有一些文字。目前,“橙色”位于第3行....所以我怎么能得到“橙色”的线。我的代码不起作用=(

enter image description here

我的C#代码:

private void button1_Click(object sender, EventArgs e)
    {
        string orange = "orange";
        int a = richTextBox1.Text.IndexOf(orange);
        var b = richTextBox1.Lines.ElementAt(a);

        textBox1.Text = b.ToString();

    }

3 个答案:

答案 0 :(得分:5)

怎么样

private void button1_Click(object sender, EventArgs e)
{
    string orange = "orange";

    textBox1.Text = richTextBox1.GetLineFromCharIndex(
      richTextBox1.Find(orange)
    );
}

请参阅RichTextBox.GetLineFromCharIndex(int)RichTextBox.Find(string)

的文档

基本上Find(string)返回文本中字符串开头的索引(如果找不到字符串,则返回-1),此索引依次传递给GetLineFromCharIndex(int)检索指定索引的行号 您可能必须处理未找到字符串并从-1返回Find(string)的特殊情况。

答案 1 :(得分:0)

您可能需要做一些事情来处理具有给定文本的多行,但它应该有效。

private void button1_Click(object sender, EventArgs e)
{
    string orange = "orange";

    foreach (string line in richTexBox1.Lines)
        if (line.Contains(orange))
            textBox1.Text = line.ToString();
}

答案 2 :(得分:0)

private void button1_Click(object sender, EventArgs e)
{
    string orange = "orange";
    stringp[] lines = richTextBox1.Lines;
    foreach(string line in lines)
    {
    int a = line.IndexOf(orange);
    if(a >0)
    {
      var b = line.ElementAt(a);

      textBox1.Text = b.ToString();
    }

}

希望有所帮助