我在 Visual Studio 2008 中工作,我希望在打开文件时运行 Edit > Outlining > Collapse to Definitions。如果在那之后,所有地区都扩大了,那就太好了。我尝试了 Kyralessa 在The Problem with Code Folding的评论中提供的代码,它作为一个我必须手动运行的宏非常有效。我尝试通过将以下代码放在宏 IDE 的 EnvironmentEvents 模块中来扩展此宏以充当事件:
Public Sub documentEvents_DocumentOpened(ByVal Document As EnvDTE.Document) Handles DocumentEvents.DocumentOpened
Document.DTE.ExecuteCommand("Edit.CollapsetoDefinitions")
DTE.SuppressUI = True
Dim objSelection As TextSelection = DTE.ActiveDocument.Selection
objSelection.StartOfDocument()
Do While objSelection.FindText("#region", vsFindOptions.vsFindOptionsMatchInHiddenText)
Loop
objSelection.StartOfDocument()
DTE.SuppressUI = False
End Sub
但是,当我从 VS 中的解决方案打开文件时,这似乎没有任何作用。为了测试宏是否正在运行,我MsgBox()
在该子例程中添加了一条语句,并注意到之前的代码Document.DTE.ExecuteCommand("Edit.CollapsetoDefinitions")
运行良好,但在该行之后似乎没有受到任何影响。当我在子例程中调试并设置断点时,我会按 F10 继续下一行,一旦该ExecuteCommand
行运行,控制就会离开子例程。尽管如此,那条线似乎什么也没做,即它不会折叠大纲。
我也尝试DTE.ExecuteCommand("Edit.CollapsetoDefinitions")
在子例程中使用,但没有运气。
这个问题试图获得与这个问题相同的最终结果,但我问的是我在事件处理宏中可能做错了什么。