3

运行更改所选文本的宏时,标签会自动关闭并格式化文本。我怎样才能防止这种情况发生?

例如,在标签中包装文本:

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>

4

2 回答 2

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
于 2010-03-20T02:35:29.277 回答
0

我认为这样做的唯一方法是为您的编辑打开一个撤消事务。这应该暂停所有格式化操作,直到事务完成。这将允许您在格式之前执行多个编辑操作。

这是文档 OpenLinkedUndo 方法

于 2009-07-27T16:07:18.117 回答