2010-11-24 8 views
1

私のコードはなぜ機能しないのですか?C#関数の問題を発見しました(ハイライトできません)

現在、私はユーザーが入力した単語を見つけることができますが、richTextBoxConversationの単語を強調表示することはできません。

どうすればいいですか?続き

は私のコードです:

private void buttonTextFilter_Click(object sender, EventArgs e) 
    { 
     string s1 = richTextBoxConversation.Text.ToLower(); 
     string s2 = textBoxTextFilter.Text.ToLower(); 

     if (s1.Contains(s2)) 
     { 
      MessageBox.Show("Word found!"); 
      richTextBoxConversation.Find(s2); 
     } 
     else 
     { 
      MessageBox.Show("Word not found!"); 
     } 
    } 
+0

RichTextBox.Find()から返された値で何かする必要がありますか? – ddrace

答えて

0

あなたは順番にSelectとする "ハイライト" という言葉をFindからの戻り値を使用することができます

RichTextBoxでテキストを選択できますが、リッチテキストボックスにフォーカスがある場合はテキストが選択モードになるので、コードは

である必要があります
// RichTextBox.Select(startPos,length) 

int startPos = richTextBoxConversation.Find(s2); 

int length = s2.Length; 

if (startPos > -1) 
{ 
    MessageBox.Show("Word found!"); 
    // Now set focus on richTextBox 
    richTextBoxConversation.Focus(); 
    richTextBoxConversation.Select(startPos , length); 
} 
else 
{ 
    MessageBox.Show("Word not found!"); 
} 
+0

遅い返事をおかけして申し訳ありません。あなたが同じフォームにそれらを置くと、あなたのコードは機能します。私は別の形でそれらを配置する場合、それは動作することはできません。 – athgap

+0

とにかく、次の関数を見つける方法を知っていますか?同じ単語が1つ以上ある場合、richtextboxからその単語の残りの部分が強調表示されるように、次の関数を見つけたいと思います。 – athgap

6

あなたはFindメソッドを使用している - これは単にあなたの言葉が存在するテキストボックスに、それを選択しないを伝えます。

if (s1.Contains(s2)) 
{ 
    MessageBox.Show("Word found!"); 
    int wordPosition = richTextBoxConversation.Find(s2); // Get position 
    richTextBoxConversation.Select(wordPosition, s2.Length); 
} 

あるいは、より良い(回避単語を二回s1を検索する)::

int wordPosition = richTextBoxConversation.Find(s2); // Get position 
if (wordPosition > -1) 
{ 
    MessageBox.Show("Word found!"); 
    richTextBoxConversation.Select(wordPosition, s2.Length); 
} 
else 
{ 
    MessageBox.Show("Word not found!"); 
} 
+0

私は理由はわかりませんが、まだrichtextboxの単語を強調表示していません。とにかく、どうしてそれが語彙> -1なのか私に説明できますか?なぜ-1で、他の数字ではないのですか? – athgap

+0

@athgap - find(私はそれをリンクしています)のドキュメントを読むと、** Findが見つからない場合、 'Find'の戻り値は' -1'です。 – Oded

関連する問題