Как выполнить операцию Find/FindNext в Notepad C# winforms
Пожалуйста, кто-нибудь предложить мне некоторые идеи относительно того, как выполнить операцию поиска /findNext в программе блокнота на C#. Я хочу найти все вхождения строк в RichTextBox и выделить каждое вхождение по нажатию кнопки findNext.
2 ответа
Вы можете взглянуть на этот код: http://www.dreamincode.net/code/snippet2466.htm и для выделения текста. Выделите текст в TextBox/Label/RichTextBox с помощью C#
Я создал клон блокнота в C#, который реализует операцию find / findnext, идентичную блокноту Window. Вы можете найти источник здесь:
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
"s SelectionStart
, SelectionLength
, а также Text
свойства.