Пример #1
0
 private void SetCaretMark(CaretMark caretMark)
 {
     if (this.txtCode.InvokeRequired)//如果调用控件的线程和创建创建控件的线程不是同一个则为True
     {
         while (!this.txtCode.IsHandleCreated)
         {
             //解决窗体关闭时出现“访问已释放句柄“的异常
             if (this.txtCode.Disposing || this.txtCode.IsDisposed)
             {
                 return;
             }
         }
         var d = new SetCaretMarkCallback(SetCaretMark);
         this.txtCode.Invoke(d, new object[] { caretMark });
     }
     else
     {
         lock (locker)
         {
             if (caretMark == null)
             {
                 if (_caretMark != null)
                 {
                     this.txtCode.Document.BookmarkManager.RemoveMark(_caretMark);
                     _caretMark = null;
                     this.txtCode.Refresh();
                 }
             }
             else
             {
                 //清空当前的书签标识
                 if (_caretMark != null)
                 {
                     this.txtCode.Document.BookmarkManager.RemoveMark(_caretMark);
                 }
                 _caretMark = caretMark;
                 this.txtCode.Document.BookmarkManager.AddMark(_caretMark);
                 this.txtCode.Refresh();
             }
         }
     }
 }
Пример #2
0
        private void SetCaretMark(CaretMark caretMark)
        {
            if (caretMark == null)
            {
                if (_caretMark != null)
                {
                    _textEditor.Document.MarkerStrategy.RemoveAll(p => true);
                    _textEditor.Document.BookmarkManager.RemoveMark(_caretMark);
                    _caretMark = null;

                    _textEditor.Refresh();
                }
            }
            else
            {
                _caretMark = caretMark;
                _textEditor.Document.BookmarkManager.AddMark(_caretMark);

                _textEditor.Refresh();
            }
        }
Пример #3
0
        private void ShowDebugInfo(DebugInformation e)
        {
            //将数据展示在监视中
            IList <LocalVariable> list = new List <LocalVariable>();

            foreach (var item in e.Locals)
            {
                if (item.Key != "arguments")
                {
                    list.Add(GetLocalVariableJS(item.Key, item.Value));
                }
                //if (item.Value.IsObject() == true)
                //{
                //    list.Add(new LocalVariable() { Name = item.Key, TypeName = item.Value.Type.ToString(), Value = item.Value.ToString(), Obj = item.Value.ToObject() });

                //}
                //else
                //{
                //    list.Add(new LocalVariable() { Name = item.Key, TypeName = item.Value.Type.ToString(), Value = item.Value.ToString() });

                //}

                /*
                 * if (item.Value.IsObject() == true)
                 * {
                 * var obj = item.Value.ToObject();
                 * list.Add(new LocalVariable() { Name = item.Key, TypeName = item.Value.Type.ToString(), Value = Newtonsoft.Json.JsonConvert.SerializeObject(obj,) });
                 *
                 * var obj = item.Value.ToObject();
                 * var type = obj.GetType();
                 * //是否数组
                 * if (type.IsGenericType)
                 * {
                 * //判断长度
                 * int count = Convert.ToInt32(type.GetProperty("Count").GetValue(obj, null));
                 * if (count > 0)
                 * {
                 *   var subObject = type.GetProperty("Item").GetValue(obj, new object[] { 0 });
                 *   var subType = subObject.GetType();
                 *   if (subType.Name == "DapperRow" || subType.Name == "ExpandoObject")
                 *   {
                 *       list.Add(new LocalVariable() { Name = item.Key, TypeName = item.Value.Type.ToString(), Value = Newtonsoft.Json.JsonConvert.SerializeObject(obj) });
                 *   }
                 *   else
                 *   {
                 *       list.Add(new LocalVariable() { Name = item.Key, TypeName = item.Value.Type.ToString(), Value = item.Value.ToString() });
                 *   }
                 * }
                 * else
                 * {
                 *   list.Add(new LocalVariable() { Name = item.Key, TypeName = item.Value.Type.ToString(), Value = item.Value.ToString() });
                 * }
                 * }
                 * else if (type.Name == "ExpandoObject")
                 * {
                 * list.Add(new LocalVariable() { Name = item.Key, TypeName = item.Value.Type.ToString(), Value = Newtonsoft.Json.JsonConvert.SerializeObject(obj) });
                 * }
                 * else
                 * {
                 * list.Add(new LocalVariable() { Name = item.Key, TypeName = item.Value.Type.ToString(), Value = item.Value.ToString() });
                 * }
                 *
                 * }
                 * else
                 * {
                 * list.Add(new LocalVariable() { Name = item.Key, TypeName = item.Value.Type.ToString(), Value = item.Value.ToString() });
                 * }*/
            }
            //将入参放入监视列表中
            foreach (var item in e.Globals)
            {
                if (item.Key == "model")
                {
                    list.Add(GetLocalVariableJS(item.Key, item.Value));
                }
            }

            ShowLocalVariableList(list);

            //获取文本位置
            int start = GetOffset(e.CurrentStatement.Location.Start);
            int end   = GetOffset(e.CurrentStatement.Location.End);

            var position = this.txtCode.Document.OffsetToPosition(start);

            var caretMark = new CaretMark(this.txtCode.Document, position);

            //展示当前运行行
            SetCaretMark(caretMark);
        }