3

選択したテキストを変更するマクロを実行すると、タグが自動的に閉じられ、テキストが書式設定されます。どうすればそれを防ぐことができますか?

たとえば、テキストをタグでラップします。

DTE.ActiveDocument.Selection.Text = String.Format("<tag>{0}</tag>", DTE.ActiveDocument.Selection.Text)

2 つの終了タグで終了します。

<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 に答える