Visual Studio - 如何在运行宏时禁用自动格式化/更正?

Posted

技术标签:

【中文标题】Visual Studio - 如何在运行宏时禁用自动格式化/更正?【英文标题】:Visual Studio - How to disable autoformat/correct while running macro? 【发布时间】:2010-11-14 09:51:38 【问题描述】:

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

例如,在标签中换行:

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>

如何防止这种情况发生?从上个例子可以看出,格式不对,多了一个&lt;/li&gt;

【问题讨论】:

【参考方案1】:

您需要插入文本而不是分配文本:

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

【讨论】:

【参考方案2】:

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

这里是文档 OpenLinkedUndo 方法

http://msdn.microsoft.com/en-us/library/microsoft.visualstudio.textmanager.interop.ivslinkedundotransactionmanager.openlinkedundo(VS.80).aspx

【讨论】:

那里没有示例代码...想要撤消宏操作(如果这阻止了这种情况的发生)

以上是关于Visual Studio - 如何在运行宏时禁用自动格式化/更正?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Visual Studio 中禁用基于对话框的 MFC 应用程序的自动关闭?

如何在 Visual Studio Code 中临时禁用“防止脏写”功能

如何禁用调试断言对话框 Visual Studio 或输出 exe

如何在 Win 7 Visual Studio 2012 的 C# 中禁用#if DEBUG

Visual Studio 在调试模式下禁用 TRACE

Visual Studio 代码 cmd 错误:无法加载,因为在此系统上禁用了运行脚本