C# 创建VS2010加载项以折叠活动文档的每个方法

C# 创建VS2010加载项以折叠活动文档的每个方法,c#,visual-studio-2010,visual-studio-addins,C#,Visual Studio 2010,Visual Studio Addins,我正在寻找使用VS2010插件折叠活动文档的每个方法的源代码。 目前,我解析文档的文本内容,试图匹配行是否为方法签名。如果是这样的话,我就把方法折叠起来 TextSelection selection = (TextSelection)_applicationObject.ActiveDocument.Selection; var editPoint = selection.ActivePoint.CreateEditPoint(); editPoint.MoveToLineAndOffset(

我正在寻找使用VS2010插件折叠活动文档的每个方法的源代码。
目前,我解析文档的文本内容,试图匹配行是否为方法签名。如果是这样的话,我就把方法折叠起来

TextSelection selection = (TextSelection)_applicationObject.ActiveDocument.Selection;
var editPoint = selection.ActivePoint.CreateEditPoint();
editPoint.MoveToLineAndOffset(1, 1);

while (!editPoint.AtEndOfDocument)
{
    editPoint.StartOfLine();
    var line = editPoint.GetText(editPoint.LineLength).TrimStart();

    if (line.StartsWith("public"))
    {
        selection.MoveToLineAndOffset(editPoint.Line, 1);
        _applicationObject.ExecuteCommand("Edit.ToggleOutliningExpansion");
    }

    // go to the next line
}

有没有人能告诉我,我走的是好路还是最容易的路?

也许我问的问题不太好。我真正的目标是折叠所有代码:属性、方法、注释和//,使用;但不是区域。
这里有一个解决方案:

// reduce everything like Ctrl+M+O
_applicationObject.ExecuteCommand("Edit.CollapsetoDefinitions");

// save the cursor position
TextSelection selection = (TextSelection)_applicationObject.ActiveDocument.Selection;
var selectedLine = selection.ActivePoint.Line;
var selectedColumn = selection.ActivePoint.DisplayColumn;

// open the regions
selection.StartOfDocument();
while (selection.FindText("#region", (int)vsFindOptions.vsFindOptionsMatchInHiddenText))
{
    // do nothing since FindText automatically expands any found #region
}

// put back the cursor at its original position
selection.MoveToDisplayColumn(selectedLine, selectedColumn);

我希望这能有所帮助

也许我问得不太好。我真正的目标是折叠所有代码:属性、方法、注释和//,使用;但不是区域。
这里有一个解决方案:

// reduce everything like Ctrl+M+O
_applicationObject.ExecuteCommand("Edit.CollapsetoDefinitions");

// save the cursor position
TextSelection selection = (TextSelection)_applicationObject.ActiveDocument.Selection;
var selectedLine = selection.ActivePoint.Line;
var selectedColumn = selection.ActivePoint.DisplayColumn;

// open the regions
selection.StartOfDocument();
while (selection.FindText("#region", (int)vsFindOptions.vsFindOptionsMatchInHiddenText))
{
    // do nothing since FindText automatically expands any found #region
}

// put back the cursor at its original position
selection.MoveToDisplayColumn(selectedLine, selectedColumn);

我希望这能有所帮助

只是好奇,它与Ctrl+M+L有什么不同?c#编辑器的组合键Ctrl-M-O就可以了。谢谢大家,但我想在VS加载项中以编程方式使用折叠功能。你可以简单地以编程方式触发现有命令。只是好奇,它与Ctrl+M+L有什么不同?c#editor的组合键Ctrl-M-O可以做到这一点。谢谢各位,但我想在VS加载项中以编程方式使用折叠功能。您只需以编程方式触发现有命令即可。