Итак, у меня есть этот код здесь

int pos = richTextBox1.Find("someText", RichTextBoxFinds.MatchCase);
if (pos != -1)
{
    int line = richTextBox1.GetLineFromCharIndex(pos);
    string lineString = line.ToString();
    string inside = string.Format(lineString);
    MessageBox.Show(inside);
}

Если вы не знакомы, все дело в том, чтобы найти, в какой строке находится конкретный текст.

Я хочу взять эту строку текста и прочитать, что это за строка.

Так, например, если строка someText hfdshjslkgjhsdilg

Тогда я бы получил сообщение о том, что someText hfdshjslkgjhsdilg

2
conjure 14 Апр 2016 в 04:48

3 ответа

Лучший ответ

Вот решение LINQ:

string line = richTextBox.Lines.FirstOrDefault(l => l.Contains(searchedText));
if (line != null) MessageBox.Show(line);
3
Vladyslav 14 Апр 2016 в 01:56

Чтобы использовать для этого методы RichTextBox, вы можете использовать richTextBox1.Lines.ElementAt для получения Text:

int pos = richTextBox1.Find("someText", RichTextBoxFinds.MatchCase);
if (pos != -1) {
    int line = richTextBox1.GetLineFromCharIndex(pos);
    string lineString = richTextBox1.Lines.ElementAt(line);
    MessageBox.Show(lineString);
}

Lines вернет вам строки в RichTextBox, а ваш int line сообщит вам индекс строки, которую вы хотите захватить. Итак, вам просто нужно использовать их, чтобы захватить вашу строку с помощью Lines.ElementAt(line)

3
Ian 14 Апр 2016 в 01:58
int pos = richTextBox1.Find("someText", RichTextBoxFinds.MatchCase);
if (pos != -1)
{
    int line = richTextBox1.GetLineFromCharIndex(pos);
    int nextLineStart = richTextBox1.GetFirstCharIndexFromLine(line + 1);
    if (nextLine != -1)
    {
        string lineString = richTextBox1.Text.Substring(pos, nextLineStart - pos);
        MessageBox.Show(lineString);
    }
}
2
hoodaticus 14 Апр 2016 в 01:58