private void btReplaceAll_Click(object sender, EventArgs e)
 {
     try
     {
         tb.Selection.BeginUpdate();
         tb.Selection.Start = new Place(0, 0);
         //search
         var ranges = FindAll();
         //replace
         if (ranges.Count > 0)
         {
             tb.manager.ExecuteCommand(new ReplaceTextCommand(tb, ranges, tbReplace.Text));
             tb.Selection.Start = new Place(0, 0);
         }
         //
         tb.Invalidate();
         CheetahMessage f = new CheetahMessage();
         f.Title = "Info";
         f.Message = ranges.Count + " occurrence(s) replaced";
         f.CancelVisible = false;
         f.ShowDialog();
     }
     catch (Exception ex)
     {
         CheetahMessage f = new CheetahMessage();
         f.Title = "Error!";
         f.Message = ex.Message;
         f.CancelVisible = false;
         f.ShowDialog();
     }
     tb.Selection.EndUpdate();
 }
 private void btFindNext_Click(object sender, EventArgs e)
 {
     try
     {
         if (!Find())
         {
             CheetahMessage f = new CheetahMessage();
             f.Title = "Warning!";
             f.Message = "Not found";
             f.CancelVisible = false;
             f.ShowDialog();
         }
     }
     catch (Exception ex)
     {
         CheetahMessage f = new CheetahMessage();
         f.Title = "Error!";
         f.Message = ex.Message;
         f.CancelVisible = false;
         f.ShowDialog();
     }
 }
 private void btReplace_Click(object sender, EventArgs e)
 {
     try
     {
         if (tb.SelectionLength != 0)
             tb.InsertText(tbReplace.Text);
         btFindNext_Click(sender, null);
     }
     catch (Exception ex)
     {
         CheetahMessage f = new CheetahMessage();
         f.Title = "Error!";
         f.Message = ex.Message;
         f.CancelVisible = false;
         f.ShowDialog();
     }
 }
 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;
         }
         CheetahMessage f = new CheetahMessage();
         f.Title = "Warning!";
         f.Message = "Not found";
         f.CancelVisible = false;
         f.ShowDialog();
     }
     catch (Exception ex)
     {
         CheetahMessage f = new CheetahMessage();
         f.Title = "Error!";
         f.Message = ex.Message;
         f.CancelVisible = false;
         f.ShowDialog();
     }
 }