如何在Visual Studio 2008中永久禁用区域折叠

114

有人知道如何在Visual Studio 2008中关闭代码折叠吗?我的一些同事很喜欢它,但我个人总是希望能够看到所有的代码,并且从不希望代码被折叠隐藏。我想设置一个选项,使我的Visual Studio版本永远不会折叠#regions或函数体。

9个回答

146

编辑:我建议参考这个答案

转到工具->选项菜单。 进入文本编辑器->C#->高级设置。 取消选中“打开文件时进入大纲模式”。

这将禁用所有c#代码文件的折叠功能,包括区域折叠。


12
取消选中此选项会完全禁用大纲功能,但是否有其他设置可以在打开文件时仅显示代码中的所有区域已展开? - Dirk Vollmar
我认为你必须使用宏来完成这个任务,但我不知道实现它的代码。 - Greg
选项位置已移动至VS 2013:文本编辑器-> C#->视图,大纲语句块。 - idbrii
有人能解释一下大纲模式是什么吗?谢谢! - Colonel Panic
这在VS 2015中也可以工作,我很感激! - RonC

57

被接受的答案关闭了所有代码折叠功能。如果您想要禁用#region折叠,但是保留注释、循环、方法等其他内容的折叠,那么我为您编写了一个插件以实现此目的。

让#region更好用(免费):

http://visualstudiogallery.msdn.microsoft.com/0ca60d35-1e02-43b7-bf59-ac7deb9afbca

  • 在打开文件时自动展开区域
  • 可选择防止区域折叠(但仍能折叠其他代码)
  • 使#region / #end region行的背景更小、更轻,以便它们不那么显眼(也是一种选择)
  • 适用于C#和VB(但仅适用于VS 2010/2012,不支持2008)

Region Tool Screenshot


有没有VS 2013版本的计划?源代码可用吗?我相信会有人愿意添加2013支持。 - Chuck Conway
4
希望使用VS 2017。 - Nick Painter
1
@NickPainter我很欣赏这条评论,尽管晚了大约4年,但你可以通过修改DisableRegions.vsix中的extension.vsixmanifest文件(它只是一个重命名的zip文件)来使其在VS2017上安装。请记住,我只在一个VS安装中测试了大约2分钟,所以可能因人而异,但它对我来说似乎是有效的。但是如果你损坏了你的VS安装,我不承担任何责任。 - Ceisc

10

我在工具 > 选项 > 文本编辑器 > C# > 高级 > 实现接口中找到了这个。取消选中用#region包围生成的代码。再次感谢。 - crush

9
选项 / 文本编辑器 / C# / 高级 / 打开文件时进入大纲模式

9

这不是永久性的,但是按下 Ctrl-M Ctrl-L 可以扩展文件中的区域。


5
此外,快速切换展开/折叠所有区域的方法是:CTRL + M + L。

2
我在一个相关但不是重复的帖子中发布了一个答案,可能会对一些人有所帮助。我详细说明了如何创建宏来通过注释掉#region和#endregion指令来停用单个单元的#regions,并提供了一个重新激活它们的伴侣。当#regions被停用时,Ctrl+M+O / 折叠到定义函数正好符合我的要求。我希望这对除我之外的某个人有用。折叠到定义的快捷方式(除了区域)

1

这个选项似乎只在C#中可用,而不是在C/C++(Visual Studio 2005)中。要禁用C/C++文件中的大纲,您需要通过将大纲颜色更改为编辑器的背景颜色来进行一些技巧。要做到这一点,请转到“工具”>“选项”>“环境”>“字体和颜色”>“可折叠文本”>将“项目前景”颜色更改为白色(或任何您的背景颜色)。


这个!这就是我一直在寻找的东西!非常感谢您对一个让我苦恼了数月(甚至数年)的“特性”的深入洞察! - jerhewet
使用这个解决方案可能会遇到麻烦,如果您误点击了那个白色区域并折叠了区域,那么要展开它,您需要瞄准点击一个看不见的区域。 - Czarek Tomczak

0

我用一个环境事件解决了我的问题:

  1. 启动宏编辑器(Alt+F11)
  2. 打开宏项目/环境事件
  3. 粘贴以下代码:

    Private Sub DocumentEvents_DocumentOpened(ByVal Document As EnvDTE.Document) Handles DocumentEvents.DocumentOpened
        If (Not Document Is Nothing) Then
            If (Document.FullName.ToLower().EndsWith(".cs")) Then
                Try
                    DTE.ExecuteCommand("Edit.ExpandAllOutlining")
                Catch ex As Exception
                End Try
            End If
        End If
    End Sub

    Private Sub WindowEvents_WindowActivated(ByVal GotFocus As EnvDTE.Window, ByVal LostFocus As EnvDTE.Window) Handles WindowEvents.WindowActivated
        If (Not GotFocus Is Nothing) Then
            If (Not GotFocus.Document Is Nothing) Then
                If (GotFocus.Document.FullName.ToLower().EndsWith(".cs")) Then
                    Try
                        DTE.ExecuteCommand("Edit.ExpandAllOutlining")
                    Catch ex As Exception
                    End Try
                End If
            End If
        End If
    End Sub

你好,Tobi


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接