Entwickler-Ecke

Basistechnologien - ab bestimmter stelle von Richtextbox kopieren


felix96 - Sa 11.09.10 18:29
Titel: ab bestimmter stelle von Richtextbox kopieren
Hallo,
ich würde gerne mein Programm alles ab einem Bestimmten Wort in eine andere Richtextbox speichern, nur wie ?

Hier mal mein bisheriger Code:


C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
string[] einträge;
einträge = richTextBox2.Lines;
                richTextBox1.Text = "";
                lesen = false;
                int ins = -1;
                foreach (string s in einträge)
                {
                    ins++;
                    if (einträge[ins].CompareTo("C#") != -1)
                    {
                        MessageBox.Show(einträge[ins]);
                        //lesen = true;
                        richTextBox1.Text = richTextBox1.Text + einträge[ins];
                    }
                    if (lesen==true)
                        richTextBox1.Text = richTextBox1.Text + s;
                }


Und hier der Inhalt:
Hallo,
Liebe
C# ler
^^ war das schlüsselwort

Allerdings steht in Richtextbox1 zum Schluss "Hallo,Liebe C# ler"

mfg Felix

P.S.
Wenn ich mit der Variable von foreach arbeite geht es auch nicht.

Moderiert von user profile iconKha: Code- durch C#-Tags ersetzt


jaenicke - Sa 11.09.10 18:41

Was der Code macht ist (soweit ich das nach einem kurzen Blick sehe) alle Zeilen, die nicht "C#" sind, in das andere RichEdit kopiert werden.

Was steht denn in dem RichEdit drin?
// EDIT: Wenn da keine Zeile ist, die exakt C# ist, wird auch alles kopiert. Wenn du auch die genannte Zeile ignoriert haben willst, musst du statt die Strings zu vergleichen auch schauen ob C# in dem String vorkommt.

Nebenbei:

C#-Quelltext
1:
2:
                    if (lesen==true)
                        richTextBox1.Text = richTextBox1.Text + s;
Das sieht unschön aus (ob das in C# auch Probleme macht, weiß ich nicht). Besser:

C#-Quelltext
1:
2:
                    if (lesen)
                        richTextBox1.Text = richTextBox1.Text + s;


felix96 - So 12.09.10 10:23

user profile iconjaenicke hat folgendes geschrieben Zum zitierten Posting springen:

// EDIT: Wenn da keine Zeile ist, die exakt C# ist, wird auch alles kopiert. Wenn du auch die genannte Zeile ignoriert haben willst, musst du statt die Strings zu vergleichen auch schauen ob C# in dem String vorkommt.


Wie mach ich das?


felix96 - So 12.09.10 10:40

indexOf


Danke :-)


felix96 - So 12.09.10 11:03

Doch noch nicht gelöst :-(

Wenn ich in die Box einen Quelltext von Webbrowser übertrage, ist diese ohne Zeilenumbrüche, dass heißt wenn ich Foreach drüber laufen lasse, ist es nur ein Durchgang.


C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
foreach 
int i=0;
(string s in richTextBox2.Lines)
{
i++;
MessageBox.Show(Convert.ToString(i));
}


Es kommt einmal eine Dialog-Box, wo 1 drin steht.


felix96 - So 12.09.10 11:36

fürs erste gelöst ;P

richTextBox2.Text = richTextBox2.Text + i + "\r\n";
jetzt hat sie Umbrüche.