C#查找功能问题(无法突出显示)

时间:2010-11-24 07:42:21

标签: c# winforms find richtextbox

我想问为什么我的代码不起作用?

目前,我能够找到用户输入的单词,但无法在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!");
        }
    }

2 个答案:

答案 0 :(得分:6)

您正在使用Find方法 - 这只是告诉您文本框中的这个词存在,它不会选择它。

您可以使用Find的{​​{3}}返回值来“突出显示”这个词:

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!");
}

答案 1 :(得分:0)

您可以在RichTextBox中选择文本,但是如果该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!");
}