2010-11-19 12 views
0

Ich habe ein C# -Programm, das eine Suchfunktion verwendet, aber es ist in der Lage, das Wort zu finden, hebt aber das gefundene Wort in der richTextBox nicht hervor.C# Wie programmiere ich die Funktion

Kann mir bitte jemand die Codes mitteilen?

Danke.

Suche Funktion Klasse Form:

using System; 
using System.Collections.Generic; 
using System.ComponentModel; 
using System.Data; 
using System.Drawing; 
using System.Linq; 
using System.Text; 
using System.Windows.Forms; 

namespace Syscrawl 
{ 
public partial class Find_Form : Form 
{ 
    FTK_Menu_Browsing_History fmbh = new FTK_Menu_Browsing_History(); 

    public Find_Form() 
    { 
     InitializeComponent(); 
    } 

    public void searchButton_Click(object sender, EventArgs e) 
    { 
     string s1 = fmbh.getSearchBrowsing().ToLower(); 
     string s2 = textBoxSearch.Text.ToLower(); 

     if (s1.Contains(s2)) 
     { 
      MessageBox.Show("Word found!"); 

      this.fmbh.richTextBoxBrowsing.Find(s2); 
      this.fmbh.richTextBoxBrowsing.SelectionLength = s2.Length; 
      this.fmbh.richTextBoxBrowsing.SelectionColor = Color.Red; 
      this.Close(); 
     } 
     else 
     { 
      MessageBox.Show("Word not found!"); 
     } 
    } 
} 
} 
+0

Wenig verwirrt, haben Sie jemals den Start der Auswahl auf die Ergebnisse von finden? – phill

Antwort

1

Sie müssen wählen, was Sie zuerst suchen. Dies:

int offset = s1.IndexOf(s2); 
richTextBox1.Select(offset, s2.Length); 

Danach können Sie das ganze highlightining machen. Ein weiterer Tipp, das Flackern in dem Auswahlprozess zu vermeiden, verwenden Sie diesen Code in Ihrer Form:

protected override void WndProc(ref Message m) 
{ 
    if (m.Msg == 0) { 
     if (!_doPaint) 
      return; 
    } 

    base.WndProc(ref m); 
} 

Vor allem setzen _doPaint zu falscher Auswahl und nach der Auswahl setzt sie auf true gesetzt.

Ich hoffe, ich kann helfen!

+0

Funktioniert nicht): – athgap

0

Sie müssen s1.IndexOf(s2, StringComparison.CurrentCultureIgnoreCase) anrufen, um die Position der Übereinstimmung zu finden.

Es sieht auch so aus, als ob Ihr Suchformular eine eigene Instanz des History-Formulars erstellt; Es verwendet die vorhandene Instanz nicht.
Sie sollten in Erwägung ziehen, einen Konstruktorparameter zu akzeptieren.