private bool TryFindNext(string pattern, RegexOptions opt, FindNextDirection direction, Range range, out Place foundMatchPlace) { if (direction == FindNextDirection.Next) { foreach (var r in range.GetRangesByLines(pattern, opt)) { foundMatchPlace = r.Start; tb.Selection = r; tb.DoSelectionVisible(); tb.Invalidate(); return(true); // always return on the first match } } else // find previous { foreach (var r in range.GetRangesByLinesReversed(pattern, opt)) { foundMatchPlace = r.Start; tb.Selection = r; tb.DoSelectionVisible(); tb.Invalidate(); return(true); // always return on the first match } } foundMatchPlace = Place.Empty; return(false); }
/// <summary> /// <summary> /// Find Next /// </summary> /// <param name="pattern"></param> /// id FindNext(string pattern) public void FindNext(string pattern) { try { var opt = cbMatchCase.Checked ? RegexOptions.None : RegexOptions.IgnoreCase; if (!cbRegex.Checked) { pattern = Regex.Escape(pattern); } if (cbWholeWord.Checked) { pattern = "\\b" + pattern + "\\b"; } // var range = tb.Selection.Clone(); range.Normalize(); // if (_firstSearch) { _startPlace = range.Start; _firstSearch = false; } // range.Start = range.End; range.End = range.Start >= _startPlace ? new Place(tb.GetLineLength(tb.LinesCount - 1), tb.LinesCount - 1) : _startPlace; // foreach (var r in range.GetRanges(pattern, opt)) { tb.Selection = r; tb.DoSelectionVisible(); tb.Invalidate(); return; } // if (range.Start >= _startPlace && _startPlace > Place.Empty) { tb.Selection.Start = new Place(0, 0); FindNext(pattern); return; } MessageBox.Show("Not found"); } catch (Exception ex) { MessageBox.Show(ex.Message); } }
public virtual void FindNext(string pattern) { List <Range> ranges = null; Place end; try { RegexOptions opt = CaseChecked ? RegexOptions.None : RegexOptions.IgnoreCase;/*match case*/ if (WholeWordChecked) { pattern = "\\b" + pattern + "\\b"; /*match all*/ } // Range range = tb.Selection.Clone(); range.Normalize(); // range.Start = range.End; range.End = new Place(tb.GetLineLength(tb.LinesCount - 1), tb.LinesCount - 1); // ranges = new List <Range>(range.GetRangesByLines(pattern, opt)); foreach (Range r in ranges) { tb.Selection = r; tb.DoSelectionVisible(); tb.Invalidate(); return; } // end = range.Start; range.Start = new Place(0, 0); range.End = end; // ranges = new List <Range>(range.GetRangesByLines(pattern, opt)); foreach (Range r in ranges) { tb.Selection = r; tb.DoSelectionVisible(); tb.Invalidate(); return; } //MessageBox.Show("Not found"); } catch (Exception ex) { MessageBox.Show(ex.Message); } }
public virtual void FindNext(string pattern) { try { RegexOptions opt = cbMatchCase.Checked ? RegexOptions.None : RegexOptions.IgnoreCase; if (!cbRegex.Checked) { pattern = Regex.Escape(pattern); } if (cbWholeWord.Checked) { pattern = "\\b" + pattern + "\\b"; } // Range range = tb.Selection.Clone(); range.Normalize(); // if (firstSearch) { startPlace = range.Start; firstSearch = false; } // range.Start = range.End; if (range.Start >= startPlace) { range.End = new Place(tb.GetLineLength(tb.LinesCount - 1), tb.LinesCount - 1); } else { range.End = startPlace; } // foreach (var r in range.GetRangesByLines(pattern, opt)) { tb.Selection = r; tb.DoSelectionVisible(); tb.Invalidate(); tsStatusUpdateLabel.Text = "Find: Found search term '" + tbFind.Text + "'."; return; } // if (range.Start >= startPlace && startPlace > Place.Empty) { tb.Selection.Start = new Place(0, 0); FindNext(pattern); return; } tsStatusUpdateLabel.Text = "Find: Unable to find search term '" + tbFind.Text + "'."; } catch (Exception Ex) { Console.WriteLine(Ex); } }
private void FindNext() { try { string pattern = tbFind.Text; RegexOptions opt = cbMatchCase.Checked ? RegexOptions.None : RegexOptions.IgnoreCase; if (!cbRegex.Checked) { pattern = Regex.Replace(pattern, RegexSpecSymbolsPattern, "\\$0"); } if (cbWholeWord.Checked) { pattern = "\\b" + pattern + "\\b"; } // Range range = tb.Selection.Clone(); range.Normalize(); // if (firstSearch) { startPlace = range.Start; firstSearch = false; } // range.Start = range.End; if (range.Start >= startPlace) { range.End = new Place(tb.GetLineLength(tb.LinesCount - 1), tb.LinesCount - 1); } else { range.End = startPlace; } // foreach (var r in range.GetRanges(pattern, opt)) { tb.Selection = r; tb.DoSelectionVisible(); tb.Invalidate(); return; } // if (range.Start >= startPlace && startPlace > Place.Empty) { tb.Selection.Start = new Place(0, 0); FindNext(); return; } MessageBox.Show("Not found"); } catch (Exception ex) { MessageBox.Show(ex.Message); } }
public void FindNext(string pattern) { try { tbFind.BackColor = Color.White; RegexOptions opt = cbMatchCase.Checked ? RegexOptions.None : RegexOptions.IgnoreCase; if (!cbRegex.Checked) { pattern = Regex.Escape(pattern); } if (cbWholeWord.Checked) { pattern = "\\b" + pattern + "\\b"; } // Range range = tb.Selection.Clone(); range.Normalize(); // if (firstSearch) { startPlace = range.Start; firstSearch = false; } // range.Start = range.End; if (range.Start >= startPlace) { range.End = new Place(tb.GetLineLength(tb.LinesCount - 1), tb.LinesCount - 1); } else { range.End = startPlace; } // foreach (var r in range.GetRangesByLines(pattern, opt)) { tb.Selection = r; tb.DoSelectionVisible(); tb.Invalidate(); return; } // if (range.Start >= startPlace && startPlace > Place.Empty) { tb.Selection.Start = new Place(0, 0); FindNext(pattern); return; } tbFind.BackColor = Color.LightCoral; } catch (Exception ex) { MessageBox.Show(ex.Message); } }
public virtual void FindNext(string pattern) { try { RegexOptions opt = cbMatchCase.Checked ? RegexOptions.None : RegexOptions.IgnoreCase; if (!cbRegex.Checked) { pattern = Regex.Escape(pattern); } if (cbWholeWord.Checked) { pattern = "\\b" + pattern + "\\b"; } // Range range = tb.Selection.Clone(); range.Normalize(); // if (firstSearch) { startPlace = range.Start; firstSearch = false; } // range.Start = range.End; if (range.Start >= startPlace) { range.End = new Place(tb.GetLineLength(tb.LinesCount - 1), tb.LinesCount - 1); } else { range.End = startPlace; } // foreach (var r in range.GetRangesByLines(pattern, opt)) { tb.Selection = r; tb.DoSelectionVisible(); tb.Invalidate(); return; } // if (range.Start >= startPlace && startPlace > Place.Empty) { tb.Selection.Start = new Place(0, 0); FindNext(pattern); return; } MessageBox.Show("Совпадений не найдено", MBCaption, MessageBoxButtons.OK, MessageBoxIcon.Error); } catch (Exception ex) { MessageBox.Show(ex.Message, MBCaption, MessageBoxButtons.OK, MessageBoxIcon.Error); } }
public bool Find(string pattern) { RegexOptions opt = cbMatchCase.Checked ? RegexOptions.None : RegexOptions.IgnoreCase; if (!cbRegex.Checked) { pattern = Regex.Escape(pattern); } if (cbWholeWord.Checked) { pattern = "\\b" + pattern + "\\b"; } // Range range = tb.Selection.Clone(); range.Normalize(); // if (firstSearch) { startPlace = range.Start; firstSearch = false; } // range.Start = range.End; if (range.Start >= startPlace) { range.End = new Place(tb.GetLineLength(tb.LinesCount - 1), tb.LinesCount - 1); } else { range.End = startPlace; } // foreach (var r in range.GetRangesByLines(pattern, opt)) { tb.Selection.Start = r.Start; tb.Selection.End = r.End; tb.DoSelectionVisible(); tb.Invalidate(); return(true); } if (range.Start >= startPlace && startPlace > Place.Empty) { tb.Selection.Start = new Place(0, 0); return(Find(pattern)); } return(false); }
public bool Find(string pattern) { try { RegexOptions opt = cbMatchCase.Checked ? RegexOptions.None : RegexOptions.IgnoreCase; if (!cbRegex.Checked) { pattern = Regex.Escape(pattern); } if (cbWholeWord.Checked) { pattern = "\\b" + pattern + "\\b"; } // Range range = tb.Selection.Clone(); range.Normalize(); //get count Range rangetmp = range.Clone(); rangetmp.Start = new Place(0, 0); rangetmp.End = new Place(tb.GetLineLength(tb.LinesCount - 1), tb.LinesCount - 1); int total = rangetmp.GetRangesByLines(pattern, opt).Count(); // if (firstSearch) { startPlace = range.Start; firstSearch = false; } // range.Start = range.End; if (range.Start >= startPlace) { range.End = new Place(tb.GetLineLength(tb.LinesCount - 1), tb.LinesCount - 1); } else { range.End = startPlace; } // IEnumerable <Range> ranges = range.GetRangesByLines(pattern, opt); ShowFindInfo(total, total - ranges.Count()); foreach (var r in ranges) { tb.Selection = r; tb.DoSelectionVisible(); tb.Invalidate(); return(true); } // if (range.Start >= startPlace && startPlace > Place.Empty) { tb.Selection.Start = new Place(0, 0); Find(pattern); return(true); } tb.Selection.Start = new Place(0, 0); //this.Title = "Not found"; } catch (Exception ex) { //this.Title = ex.Message; } return(true); }