private void _formFind_OnSearch(object sender, TextSearchEventArgs eventArgs) { if (_tabSearchEngine == null) { _tabSearchEngine = new TabSearchEngine(_tabPageDataCollection); } try { var searchProperties = new TextSearchProperties { CaseSensitive = eventArgs.SearchProperties.CaseSensitive, LoopSearch = eventArgs.SearchProperties.LoopSearch, SearchAllTabs = eventArgs.SearchProperties.SearchAllTabs, SearchDirection = eventArgs.SearchProperties.SearchDirection, SearchText = eventArgs.SearchProperties.SearchText }; TextSearchResult searchResult = _tabSearchEngine.GetTextSearchResult(searchProperties); if (searchResult.SearchTextFound) { _tabSearchEngine.SelectionSetByCode = true; if (searchResult.TabIndex != _tabPageDataCollection.ActiveTabIndex && searchProperties.SearchAllTabs) { _tabPageDataCollection.ActiveTabIndex = searchResult.TabIndex; tabControlNotepad.SelectedIndex = searchResult.TabIndex; } Focus(); RichTextBox textBox = GetRichTextBoxInActiveTab(); textBox.SelectionStart = searchResult.StartPos; textBox.SelectionLength = searchResult.Length; textBox.Focus(); _tabSearchEngine.SelectionSetByCode = false; } else { MessageBox.Show(Resources.FormMain__Search_string_not_found, Resources.FormMain__Not_found, MessageBoxButtons.OK, MessageBoxIcon.Information); RichTextBox textBox = GetRichTextBoxInActiveTab(); _tabSearchEngine.ResetSearchState(_tabPageDataCollection.ActiveTabIndex, textBox.SelectionStart, textBox.SelectionLength); } } catch (Exception ex) { Log.Error(ex, "Tab Text search function encountered an exception."); Log.Error(ex, "Unhandled exception when calling _formFind_OnSearch()"); MessageBox.Show(ex.Message, Resources.FormMain__ErrorText, MessageBoxButtons.OK, MessageBoxIcon.Error); } }
private void FormFind_Load(object sender, EventArgs e) { _textSearchProperties = new TextSearchProperties(); UpdateControlState(); }
public List <TextSearchResult> FindTextInAllTabs(TextSearchProperties searchProperties) { if (_searchState == null) { _searchState = new TextSearchState { InitialTabIndex = searchProperties.TabIndex, TabIndex = searchProperties.TabIndex, StartPos = searchProperties.StartPosition, InitialStartPos = searchProperties.StartPosition, MatchesFound = 0 }; } TextSearchResultCollection resultCollection = new TextSearchResultCollection(); int searchStrLength = searchProperties.SearchText.Length; int tabPageIndex = searchProperties.TabIndex; for (int i = 0; i < _searchCollection.Count; i++) { if (tabPageIndex > _searchCollection.Count) { tabPageIndex = 0; } var item = _searchCollection.FirstOrDefault(x => x.TabPageIndex == tabPageIndex); if (item != null) { int index = -1; while (index > 0) { if (_searchState.StartPos > item.RichTextBox.TextLength) { break; } index = item.RichTextBox.Find(searchProperties.SearchText, _searchState.StartPos, RichTextBoxFinds.None); if (index == -1) { break; } TextSearchResult searchResult = new TextSearchResult { StartPos = index, Length = searchStrLength, TabIndex = tabPageIndex }; resultCollection.AddSearchResult(searchResult); _searchState.StartPos = index + searchStrLength; } } _searchState.StartPos = 0; tabPageIndex++; } return(resultCollection.GetAllSearchResults()); }