Я создал клон блокнота в 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
.