C # найти проблему с функцией (не могу выделить) - PullRequest
1 голос
/ 24 ноября 2010

Я хотел бы спросить, почему мои коды не работают?

В настоящее время я могу найти слово, введенное пользователем, но оно не может выделить слово в 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 ]

6 голосов
/ 24 ноября 2010

Вы используете метод Find - это просто говорит вам , где в текстовом поле слово существует, оно не выбирает его.

Вы можете использовать возвращаемое значение из Find с Select, чтобы «выделить» слово:

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 голосов
/ 24 ноября 2010

Вы можете выбрать текст в 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!");
}
...