2016-04-14 10 views
2

So habe ich diesen Code hierC# - Lesen Sie eine bestimmte Zeile in einem 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); 
} 

Wenn Sie nicht vertraut sind es ist, zu finden, was bestimmte Textzeile eingeschaltet ist.

Ich möchte diese Zeile Text nehmen und lesen, was die gesamte Zeile ist.

So zum Beispiel, wenn die Leitung sometext hfdshjslkgjhsdilg ist

dann würde ich eine messagebox bekommen sagen sometext

hfdshjslkgjhsdilg ist
+0

greifen Nur eine Anmerkung: Stellen Sie sicher, den Unterschied zwischen Zeilen und Absätzen zu verstehen. – TaW

Antwort

3

Hier Lösung LINQ:

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

Dies ist mein Favorit. – 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

zu nutzen RichTextBox Methoden, um das zu tun, könnten Sie richTextBox1.Lines.ElementAt verwenden, um Ihre :

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

Die Lines kehren Sie Zeilen in der RichTextBox und Ihre int line werden Sie den Index der Zeile, die Sie greifen wollen sagen. Also, Sie müssen nur sie verwenden, um Ihre Linie mit Lines.ElementAt(line)

Verwandte Themen