public void SearchFindNext(string sTextPtn, bool searchUseRegex) { //AzukiのAnnの検索処理を利用 Sgry.Azuki.Document azdoc = azukiControl.Document; int startIndex; TextSegment result; Regex regex; int s, e; azdoc.GetSelection(out s, out e); searchAnchorIndex = e + 1; // determine where to start text search if (0 <= searchAnchorIndex) { startIndex = searchAnchorIndex; } else { startIndex = Math.Max(azdoc.CaretIndex, azdoc.AnchorIndex); } // find if (searchUseRegex) { // Regular expression search. // get regex object from context regex = searchRegex; if (regex == null) { // current text pattern was invalid as a regular expression. return; } // ensure that "RightToLeft" option of the regex object is NOT set RegexOptions opt = regex.Options; if ((opt & RegexOptions.RightToLeft) != 0) { opt &= ~(RegexOptions.RightToLeft); regex = new Regex(regex.ToString(), opt); searchRegex = regex; } result = azdoc.FindNext(regex, startIndex, azdoc.Length); } else { // normal text pattern matching. if (startIndex < azdoc.Length) { result = azdoc.FindNext(sTextPtn, startIndex, azdoc.Length, searchMatchCase); } else { result = null; } } // select the result if (result != null) { azukiControl.Document.SetSelection(result.Begin, result.End); azukiControl.View.SetDesiredColumn(); azukiControl.ScrollToCaret(); searchAnchorIndex = result.End; } else { MessageBox.Show("見つかりません"); } }
public bool SearchFindNext(string sTextPtn, bool searchUseRegex) { //AzukiのAnnの検索処理を利用 Sgry.Azuki.Document azdoc = ac.Document; int startIndex; Regex regex; if (searchAnchorIndex == -1) { searchAnchorIndex = select.Begin; } else { ac.GetSelection(out int st, out int ed); searchAnchorIndex = ed; } // determine where to start text search if (0 <= searchAnchorIndex) { startIndex = searchAnchorIndex; } else { startIndex = Math.Max(azdoc.CaretIndex, azdoc.AnchorIndex); } // find if (searchUseRegex) { // Regular expression search. // get regex object from context regex = searchRegex; if (regex == null) { return(false); } // ensure that "RightToLeft" option of the regex object is NOT set RegexOptions opt = regex.Options; if ((opt & RegexOptions.RightToLeft) != 0) { opt &= ~(RegexOptions.RightToLeft); regex = new Regex(regex.ToString(), opt); searchRegex = regex; } result = azdoc.FindNext(regex, startIndex, azdoc.Length); } else { // normal text pattern matching. if (startIndex < azdoc.Length) { result = azdoc.FindNext(sTextPtn, startIndex, azdoc.Length, searchMatchCase); } else { result = null; } } // select the result if (result == null) { return(false); } if (select.Begin != select.End && result.Begin > select.End) { return(false); } ac.Document.SetSelection(result.Begin, result.End); ac.View.SetDesiredColumn(); ac.ScrollToCaret(); searchAnchorIndex = result.End; return(true); }