当前位置:  开发笔记 > Android > 正文

有没有办法在Visual Studio 2008中指定默认值,以便在默认情况下折叠成员时打开文件?

如何解决《有没有办法在VisualStudio2008中指定默认值,以便在默认情况下折叠成员时打开文件?》经验,为你挑选了1个好方法。

我想要做的是拥有VS2008,当我打开代码文件时,默认情况下会折叠文件中类/接口的所有成员(包括,至关重要的是,任何XML文档和注释).

希望使用的区域,在所有.

我还希望能够使用ctrl + m,ctrl + l和弦切换所有成员大纲(例如,如果所有内容都已折叠,我希望它扩展所有成员,但不是扩展注释或XML文档).

可能?怎么样?



1> Brody..:

是的,第1部分.

不确定第2部分.

要让VS2008自动打开处于折叠状态的文件,您需要创建一个插件,以便在每个文档打开时运行"Edit.CollapsetoDefinition".

这并不是太棘手 - 困难的部分似乎是你必须在文件实际打开几毫秒后运行代码,所以你需要使用threed池来做到这一点.

    为VS2008创建一个Addin项目.

    将此代码(请参阅下面)添加到Connect类的OnConnection方法的末尾.

    switch (connectMode)
    {
        case ext_ConnectMode.ext_cm_UISetup:
        case ext_ConnectMode.ext_cm_Startup:
            //Do nothing OnStartup will be called once IDE is initialised.
            break;
        case ext_ConnectMode.ext_cm_AfterStartup:
            //The addin was started post startup so we need to call its initialisation manually
            InitialiseHandlers();
            break;
    }

    将此方法添加到Connect类

    private void InitialiseHandlers()
    {
        this._openHandler = new OnOpenHandler(_applicationObject);
    }

    将InitialiseHandlers()调用添加到Connect类的OnStartupComplete方法.

    public void OnStartupComplete(ref Array custom)
    {
        InitialiseHandlers();
    }

    将此类添加到项目中.

    using System;
    using System.Collections.Generic;
    using System.Text;
    using EnvDTE80;
    using EnvDTE;
    using System.Threading;

    namespace Collapser
    {
        internal class OnOpenHandler
        {
            DTE2 _application = null;
            EnvDTE.Events events = null;
            EnvDTE.DocumentEvents docEvents = null;

            internal OnOpenHandler(DTE2 application)
            {
                _application = application;
                events = _application.Events;
                docEvents = events.get_DocumentEvents(null);
                docEvents.DocumentOpened +=new _dispDocumentEvents_DocumentOpenedEventHandler(OnOpenHandler_DocumentOpened);
            }

            void OnOpenHandler_DocumentOpened(EnvDTE.Document document)
            {
                if (_application.Debugger.CurrentMode != dbgDebugMode.dbgBreakMode)
                {
                    ThreadPool.QueueUserWorkItem(new WaitCallback(Collapse));
                }
            }

            private void Collapse(object o)
            {
                System.Threading.Thread.Sleep(150);
                _application.ExecuteCommand("Edit.CollapsetoDefinitions", "");
            }
        }
    }

现在所有打开的文件都应该完全折叠.

推荐阅读
echo7111436
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有