运行更改所选文本的宏时,标签会自动关闭并且文本格式化。我该如何防止这种情况发生?
例如,将文本包装在标记中:
DTE.ActiveDocument.Selection.Text = String.Format("<tag>{0}</tag>", DTE.ActiveDocument.Selection.Text)
结束时有两个结束标记:
<tag>Text</tag></tag>
更奇怪的是,多行失败了:
<li>One</li>
<li>Two</li>
<li>Three</li>
结束为
<ul> <li>One</li>
<li>Two</li>
<li>Three</li></li></ul>
我该怎样防止这种情况?从最后一个示例可以看出,格式错误,还有一个额外的</li>
答案 0 :(得分:4)
您需要插入文本而不是分配文本:
Try
DTE.UndoContext.Open("InsertSomeCode")
Dim ts As TextSelection = CType(DTE.ActiveDocument.Selection, TextSelection)
ts.Insert(String.Format("<tag>{0}</tag>", ts.Text))
Finally
DTE.UndoContext.Close()
End Try
答案 1 :(得分:0)
我认为执行此操作的唯一方法是为您的编辑打开撤消事务。这应该暂停所有格式化操作,直到事务完成。这样您就可以在格式化之前进行多次编辑操作。
这是OpenLinkedUndo方法文档