0

テキストボックスで見つかったすべてのキーワードを強調表示するだけのプログラムで、ある種の検索機能を作成しようとしています。

キーワードボックスはt2.textにあり、テキストはbx2.textからのものです

まず、ここからこの方法を試しました。特定の検索テキストでキーワードを強調表示します

正規表現は機能していますが、ハイライトは機能していません

ここで何か間違っていますか?

    private void searchs()
    {
        var spattern = t2.Text;

        foreach(var s in bx2.Text)
        {
            var zxc = s.ToString();
            if (System.Text.RegularExpressions.Regex.IsMatch(zxc, spattern, System.Text.RegularExpressions.RegexOptions.IgnoreCase))
            {
               bx2.Text.Replace(bx2.Text, @"<span class=""search-highlight"">$0</span>");
            }
        }
    }
4

2 に答える 2

1

リンクされた質問は、通常のテキスト ボックスでは使用できない HTML 形式を使用しています。

どちらかの RichText ボックスが必要です。そこでは、コントロールのメソッドとプロパティを使用して (HTML を使用せずに) テキストをフォーマットできます。

または、テキスト ボックスではなくブラウザー コントロールを使用して、HTML 形式を使用します。

于 2012-12-09T16:44:11.447 に答える
1
private void findButton_Click(object sender, EventArgs e)
{
    int count = 0;
    string keyword = keywordTextbox.Text.Trim();//getting given searching string
    int startPosition = 0; //initializing starting position to search
    int endPosition = 0;
    int endArticle = articleRichTextbox.Text.Length;//finding total number of character into the article
    for (int i = 0; i<endArticle  ; i =startPosition )//creating a loop until ending the article
    {
        if (i == -1) //if the loop goes to end of the article then stop
        {
            break;
        }
        startPosition = articleRichTextbox.Find(keyword, startPosition, endArticle, RichTextBoxFinds.WholeWord);//using find method get the begining position when find the searching string
        if (startPosition >= 0)     //if match the string                                                         //if don't match the string then it  return -1
        {
            count++;//conunting the number of occuerence or match the search string
            articleRichTextbox.SelectionColor = Color.Blue;//coloring the matching string in the article
            endPosition = keywordTextbox.Text.Length;
            startPosition = startPosition + endPosition;//place the starting position at the next word of previously matching string to continue searching.

        }


    }

    if (count == 0)//if the givn search string don't match at any time
    {
        MessageBox.Show("No Match Found!!!");
    }

    numberofaccurTextbox.Text = count.ToString();//show the number of occurence into the text box
}
于 2013-06-06T04:15:27.360 に答える