2016-07-11 11 views
1

Ich habe eine Suchfunktion eingerichtet, um meine Rich-Text-Box zu durchsuchen. Es wird durch das Textfeld gehen und alle verschiedenen Fälle markieren, die übereinstimmen. Das Rich-Text-Feld listet einen Namen auf und geht dann in die nächste Zeile. Ich möchte also nicht nur den markierten Text, sondern den ganzen Namen in ein anderes Textfeld exportieren. Das habe ich bisher für eine Suchfunktion.Suchen und verschieben

 private void Search_Button_Click(object sender, EventArgs e) 
     { 
     int index = 0; 
     int count = 0; 
     string temp = Display_Rich_Text_Box.Text; 
     //bool k; 
     Display_Rich_Text_Box.Text = ""; 
     Display_Rich_Text_Box.Text = temp; 
     string[] fullName; 

     while (index <= Display_Rich_Text_Box.Text.LastIndexOf(Search_Text_Box.Text)) 
     { 
      //Searches and locates the text you are searching for 
      Display_Rich_Text_Box.Find(Search_Text_Box.Text, index, Display_Rich_Text_Box.TextLength, RichTextBoxFinds.None); 

      //Color Selection: Hightlights in yellow 
      Display_Rich_Text_Box.SelectionBackColor = Color.Yellow; 
      count = count + 1; 

      fullName = Display_Rich_Text_Box.split("\n") 

      //Will search through rest of document or until it cannot continue 
      index = Display_Rich_Text_Box.Text.IndexOf(Search_Text_Box.Text, index) + 1; 
     } 

     // if (count > 0) 
     //{ 
     Form2 f = new Form2(count.ToString(), fullName.tostring()); 
     f.ShowDialog(); 
     } 

(das Textfeld befindet sich in einer anderen Form und dieses Formular zeigt auch an, wie viele Übereinstimmungen gefunden wurden (Anzahl)).

So habe ich versucht, das Textfeld aufzuteilen, wenn es für eine neue Zeile bricht, nachdem es den Text markiert.

ab: Suche nach Falz (typisiert in Search_Text_Box)

Ordner A Ordner B neue Design Bilder

Also, wenn es sucht er betont, was in Search_Text_Box getippt. Was ich versuche zu tun ist die Zeichenfolge für die Display_Text_Box zu teilen, so dass es Ordner A und Ordner B in einem separaten Textfeld angezeigt wird, wenn der Benutzer Arten falten. Das Textfeld hat eine andere Form. Danke für jede Hilfe im Voraus.

+0

Was meinst du mit „den ganzen Namen“? Suchst du Namen in einem Rich-Text-Feld? –

+0

Das Programm findet Ordner- und Dateinamen und zeigt sie im Rich-Text-Feld an. Jeder Name erhält eine eigene Zeile. Bsp: Ordner1 (neue Zeile), Ordner2 (neue Zeile) ... Also wenn ich fol in das Suchfeld eintippe und die Suche ausführe. Es wird fol markieren; Ich möchte jedoch fol und den Rest der Zeile exportieren, so dass es folder2 auch in ein neues Textfeld verschieben sollte. Hilft das? – Tasha

+0

Wäre es hilfreich, wenn Sie die Eingabe um '\ n' aufteilen? –

Antwort

1

Ich habe Ihre Funktion zu spalten die Linien geändert:

private void Search_Button_Click(object sender, EventArgs e) 
    { 
     var lines = Display_Rich_Text_Box.Text.Split('\n'); 
     var count = 0; 

     // To get the text from the whole line (Which is the whole name you're looking for) 
     foreach (string line in lines) 
     { 
      // If the line doesn't have the text you're looking for 
      if (!line.Contains(Search_Text_Box.Text)) continue; 

      count++; 

      // Add the index of the whole input plus the index of the text within the line 
      var index = lines.IndexOf(line) + line.IndexOf(Search_Text_Box.Text); 

      //Searches and locates the text you are searching for 
      Display_Rich_Text_Box.Find(Search_Text_Box.Text, index, 
       Display_Rich_Text_Box.TextLength, RichTextBoxFinds.None); 

      //Color Selection: Hightlights in yellow 
      Display_Rich_Text_Box.SelectionBackColor = Color.Yellow; 

      //DO SOMETHING WITH LINE 
      var wholeName = line; 
     } 

     Form2 f = new Form2(searchCount); 
     f.ShowDialog(); 
    } 
+0

Aus welcher Bibliothek stammt Regex? Es wird nicht als bekanntes Schlüsselwort – Tasha

+0

mit System.Text.RegularExpressions angezeigt; –

+0

das hat wirklich gut funktioniert, danke Blue Eyed Behemoth – Tasha