Как выполнить операцию Find / FindNext в Notepad C # winforms - PullRequest
0 голосов
/ 30 июля 2011

Пожалуйста, кто-нибудь подскажет, как выполнить операцию find / findNext в программе «Блокнот» на C #.Я хочу найти все вхождения строк в RichTextBox и выделить каждое вхождение по нажатию кнопки findNext.

Ответы [ 2 ]

1 голос
/ 30 июля 2011

Вы можете взглянуть на этот код: http://www.dreamincode.net/code/snippet2466.htm и для выделения Выделите текст в TextBox / Label / RichTextBox, используя C #

0 голосов
/ 01 августа 2012

Я создал клон блокнота в C #, который реализует операцию find / findnext, идентичную блокноту Windows. Вы можете найти источник здесь:

http://www.simplygoodcode.com/2012/04/notepad-clone-in-net-winforms.html

Вот как выглядит код функции в приложении:

    private string _LastSearchText;
    private bool _LastMatchCase;
    private bool _LastSearchDown;

    public bool FindAndSelect(string pSearchText, bool pMatchCase, bool pSearchDown) {
        int Index;

        var eStringComparison = pMatchCase ? StringComparison.CurrentCulture : StringComparison.CurrentCultureIgnoreCase;

        if (pSearchDown) {
            Index = Content.IndexOf(pSearchText, SelectionEnd, eStringComparison);
        } else {
            Index = Content.LastIndexOf(pSearchText, SelectionStart, SelectionStart, eStringComparison);
        }

        if (Index == -1) return false;

        _LastSearchText = pSearchText;
        _LastMatchCase = pMatchCase;
        _LastSearchDown = pSearchDown;

        SelectionStart = Index;
        SelectionLength = pSearchText.Length;

        return true;
    }

Этот метод находится на главной форме. Он учитывает параметры в диалоговом окне «Найти». В нем хранятся значения параметров, чтобы можно было выполнить «Найти далее» / F3 позже. Некоторые из свойств, которые вы видите, например SelectionStart, SelectionLength и Content, по сути являются псевдонимами свойств TextBox * SelectionStart, SelectionLength и Text.

...