2017-01-07 20 views
0

検索とハイライト機能を追加したリッチテキストボックスがありますが、ユーザーが入力したものだけを検索します。私はこれがMatchCaseプロパティのためだと知っていますが、他のオプションのどれもその仕事をしていないようです。ここに私のコードです:リッチテキストボックスの大文字と小文字を区別しない検索条件を作成するC#

private void btnSourceSearch_Click(object sender, EventArgs e) 
{ 
    int start = 0; 
    int end = richTextBox1.Text.LastIndexOf(textBox1.Text); 

    richTextBox1.SelectAll(); 
    richTextBox1.SelectionBackColor = Color.White; 

    while(start < end) 
    { 
      richTextBox1.Find(textBox1.Text, start, richTextBox1.TextLength, RichTextBoxFinds.MatchCase); 

      richTextBox1.SelectionBackColor = Color.Yellow; 

      start = richTextBox1.Text.IndexOf(textBox1.Text, start) + 1; 
    } 
} 

私は助けていただければ幸いです。おそらくシンプルだけど、先週、数時間かけてコードを見ていて、マトリックスのように見えるようになってきました!

おかげ

答えて

0

正規表現に精通しているかどうかわかりませんが、この状況では便利です。私はそれらに精通しているわけではないが、私はそれらを使ってこのショットを与えると感じていた。それらがなければ、あなたのアプローチを使用して、何とかすべてのケースの可能性をチェックする必要があります。それは正規表現があなたの友人である場所です。以下は、テキストボックスのテキストから正規表現を作成するコードです。次に、その式を使用してRichTexBoxのテキストにあるMatchesを強調表示させます。お役に立てれば。

private void button1_Click(object sender, EventArgs e) { 
    richTextBox1.SelectAll(); 
    richTextBox1.SelectionBackColor = Color.White; 
    if (textBox1.Text.Length < 1) 
    return; 
    string pattern = @"\b" + textBox1.Text.Trim() + @"\b"; 
    Regex findString = new Regex(pattern, RegexOptions.IgnoreCase); 
    foreach (Match m in findString.Matches(richTextBox1.Text)) { 
    richTextBox1.Select(m.Index, m.Length); 
    richTextBox1.SelectionBackColor = Color.Yellow; 
    } 
} 
+0

ありがとうございます。治療をする –

0

あなたはText.ToUpper()メソッドを追加することで、検索を行うことができます。 richTextBox1.Textに.ToUpper()メソッドを追加し、両方のテキストを検索します。

0

あなたが操作するすべてのテキストについて、ToUpper()またはToLower()メソッドを使用してください。しかし、完全な文字列を待つのではなく、入力中に検索するイベントを追加しないでください。そうすれば直感的になり、トラブルシューティングが簡単になります。

関連する問題