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>
如何防止这种情况发生?从上个例子可以看出,格式不对,多了一个</li>
【问题讨论】:
【参考方案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