2016-04-14 5 views
2

Так что у меня этот код здесьC# - чтение определенной строки в RichTextBox

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

тогда я хотел бы получить MessageBox говоря SOMETEXT hfdshjslkgjhsdilg

+0

Просто заметьте: убедитесь, что понимаете разницу между строками и параграфами. – TaW

ответ

3

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

string line = richTextBox.Lines.FirstOrDefault(l => l.Contains(searchedText)); 
if (line != null) MessageBox.Show(line); 
+0

Это мой любимый. – hoodaticus

2
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); 
    } 
} 
3

Для того, чтобы использовать 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)

Смежные вопросы