コード例 #1
0
        /// <summary>
        /// Clears all displayed hints
        /// </summary>
        public void Clear()
        {
            items.Clear();
            if (tb.Controls.Count != 0)
            {
                var toDelete = new List <Control>();
                foreach (Control item in tb.Controls)
                {
                    if (item is UnfocusablePanel)
                    {
                        toDelete.Add(item);
                    }
                }

                foreach (var item in toDelete)
                {
                    tb.Controls.Remove(item);
                }

                for (int i = 0; i < tb.LineInfos.Count; i++)
                {
                    var li = tb.LineInfos[i];
                    li.bottomPadding = 0;
                    tb.LineInfos[i]  = li;
                }
                tb.NeedRecalc();
                tb.Invalidate();
                tb.Select();
                tb.ActiveControl = null;
            }
        }
コード例 #2
0
        public override void Add(Bookmark bookmark)
        {
            foreach (var bm in items)
            {
                if (bm.LineIndex == bookmark.LineIndex)
                {
                    return;
                }
            }

            items.Add(bookmark);
            counter++;
            tb.Invalidate();
        }
コード例 #3
0
        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);
        }
コード例 #4
0
 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("Not found");
     }
     catch (Exception ex)
     {
         MessageBox.Show(ex.Message);
     }
 }