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(); } } } }
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(); } }
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); }