Skip to main content

ISearchResult Interface

Defines the interface used for text searching.

Namespace: DevExpress.XtraRichEdit.API.Native

Assembly: DevExpress.RichEdit.v23.2.Core.dll

NuGet Packages: DevExpress.RichEdit.Core, DevExpress.Win.Navigation

Declaration

[ComVisible(true)]
public interface ISearchResult

Remarks

The SubDocument.StartSearch method provides the ISearchResult interface. You can then start searching, or make replacements.

The following code demonstrates how to create the ISearchResult interface, and use it to perform a search. The search interface is created for a case sensitive search, matching only whole words, i.e. strings delimited with characters which are not alphabetical or decimal digits.

The SearchStringIsEmpty() function is a custom function that checks the search text and returns true if the search string is empty.

If the search direction is SearchDirection.Forward, the search starts from the end of the current selection and proceeds forward to the end of the document. The ISearchResult.FindNext method is called to perform a search. When a matching text is found, it is selected and the document is scrolled to make the selection visible. The range containing the matched string can be obtained via the ISearchResult.CurrentResult property.

using DevExpress.XtraRichEdit;
using DevExpress.XtraRichEdit.API.Native;
        ISearchResult searchResult;
        Document Document { get { return this.richEditControl1.Document; } }
        SearchDirection direction = SearchDirection.Forward;
        SearchOptions options = SearchOptions.WholeWord |
            SearchOptions.CaseSensitive;

        ISearchResult SearchResult {
            get {
                if (searchResult == null)
                    searchResult = CreateSearchResult();
                return searchResult;
            }
        }
        private ISearchResult CreateSearchResult() {
            DocumentRange range;
            if (direction == SearchDirection.Forward) {
                int startPos = Document.Selection.End.ToInt();
                int length = Document.Range.End.ToInt() - startPos;
                range = Document.CreateRange(startPos, length);
            }
            else {
                int length = Document.Selection.Start.ToInt();
                range = Document.CreateRange(0, length);
            }
            return Document.StartSearch(searchString, options, direction, range);
        }
        private bool FindNext() {
            if(SearchStringIsEmpty())
                return false;
            if(SearchResult.FindNext()) {
                Document.Selection = SearchResult.CurrentResult;
                this.richEditControl1.ScrollToCaret();
                return true;
            }
            else {
                XtraMessageBox.Show("Search is complete.", Application.ProductName);
                return false;
            }
        }
See Also