C # Как запрограммировать функцию поиска - PullRequest
0 голосов
/ 19 ноября 2010

У меня есть программа на C #, которая использует функцию поиска, однако она может найти слово, но не выделяет найденное слово в richTextBox.

Может кто-нибудь посоветовать мне коды?

Спасибо.

Найти форму класса функции:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace Syscrawl
{
public partial class Find_Form : Form
{
    FTK_Menu_Browsing_History fmbh = new FTK_Menu_Browsing_History();

    public Find_Form()
    {
        InitializeComponent();
    }

    public void searchButton_Click(object sender, EventArgs e)
    {
        string s1 = fmbh.getSearchBrowsing().ToLower();
        string s2 = textBoxSearch.Text.ToLower();

        if (s1.Contains(s2))
        {
            MessageBox.Show("Word found!");

            this.fmbh.richTextBoxBrowsing.Find(s2);
            this.fmbh.richTextBoxBrowsing.SelectionLength = s2.Length;
            this.fmbh.richTextBoxBrowsing.SelectionColor = Color.Red;
            this.Close();
        }
        else
        {
            MessageBox.Show("Word not found!");
        }
    }
}
}

Ответы [ 2 ]

1 голос
/ 19 ноября 2010

Сначала вам нужно выбрать то, что вы ищете.Это:

int offset = s1.IndexOf(s2);
richTextBox1.Select(offset, s2.Length);

После этого вы можете сделать целое выделение.Другой совет, чтобы предотвратить мерцание в процессе выбора, используйте этот код в вашей форме:

protected override void WndProc(ref Message m)
{
    if (m.Msg == 0) {
        if (!_doPaint)
            return;
    }

    base.WndProc(ref m);
} 

Перед выбором чего-либо установите для _doPaint значение false, а после выбора установите для него значение true.

Надеюсь, я смогу помочь!

0 голосов
/ 19 ноября 2010

Вам нужно позвонить s1.IndexOf(s2, StringComparison.CurrentCultureIgnoreCase), чтобы найти позицию матча.

Кроме того, похоже, что ваша форма поиска создает собственный экземпляр формы истории; он не использует существующий экземпляр.
Вы должны рассмотреть возможность принятия параметра конструктора.

...