在非资源视图中隐藏属性/工具箱窗格?

15
每次在Visual Studio(2005年版)中查看表单或对话框时,属性和工具箱窗格会显示在屏幕右侧。这很有用,因为它们可以用来操作对话框。
但是,一旦切换回源代码,这些窗格就会妨碍操作... 有没有一种自动隐藏它们的方法?

1
自从我开始使用VS以来,这一点就一直困扰着我。 - Blorgbeard
@Blorgbeard 谢谢您提供悬赏!让我们看看是否会得到一个合适的答案! - theycallmemorty
你可能需要更精确地提出问题,才能得到一个好的答案。 - linuxbuild
尽可能使用32英寸的屏幕。在我的13.3英寸平板电脑上,VS真是让我头疼不已... - Martin Hennings
5个回答

4

最近我在使用VS2010时,使用了一个宏,在从代码视图切换到设计视图时显示和隐藏工具面板,这个宏是针对asp.net MVC3视图的。我认为可以很容易地调整它以适应您的情况。

这个宏需要放在VS Macro IDE中预生成内容后的EnvironmentEvents类文件中。

<System.ContextStaticAttribute()> Public WithEvents CommandEvents As EnvDTE.CommandEvents


  Public Sub DTEEvents_OnMacrosRuntimeReset() Handles _
  DTEEvents.OnMacrosRuntimeReset
        CommandEvents = DTE.Events.CommandEvents
    End Sub

    Private Sub DTEEvents_OnStartupComplete() Handles _
        DTEEvents.OnStartupComplete
        CommandEvents = DTE.Events.CommandEvents
    End Sub

    Public Sub CommandEvents_AfterExecute( _
    ByVal Guid As String, _
    ByVal ID As Integer, _
    ByVal CustomIn As Object, _
    ByVal CustomOut As Object) _
    Handles CommandEvents.AfterExecute

        If DTE.Commands.Item(Guid, ID).Name = "View.ViewDesigner" Then
            DTE.ExecuteCommand("View.Toolbox")
        End If

        If DTE.Commands.Item(Guid, ID).Name = "View.ViewMarkup" Then
            DTE.Windows.Item(Constants.vsWindowKindToolbox).Close()
        End If

    End Sub

使用事件的guid而不是if语句可能会更好地进行优化。当您使用快捷键切换视图以及视图菜单时,它可以正常工作,但在上下文菜单中无法正常工作。


这看起来很有前途!我会尝试让它工作起来。看起来赏金属于你。 - Blorgbeard
如何让这段代码起作用?我已经把它粘贴到了MyMacros.EnvironmentEvents中,保存了MyMacros,关闭并打开了Visual Studio,但当我切换到源代码或设计模式时,什么也没有发生。我还应该做什么? - 3per

2

针对VS2015:

  1. 菜单 > 工具 > 扩展和更新
  2. 安装 "Visual Commander"。(现在你有一个名为“VCmd”的新菜单)
  3. 菜单 > "VCmd" > 扩展 ...(您将看到右侧的扩展面板)
  4. 在扩展面板上点击添加按钮。(会打开一个新的选项卡窗口。)
  5. 为扩展命名。
  6. 选择C#作为语言。
  7. 粘贴下面的代码:
  8. 按保存,然后按编译,最后按安装。

using EnvDTE;
using EnvDTE80;

public class E : VisualCommanderExt.IExtension
{
    private EnvDTE80.DTE2 DTE;
    private EnvDTE.WindowEvents windowEvents;

    public void SetSite(EnvDTE80.DTE2 DTE, Microsoft.VisualStudio.Shell.Package package) {
        this.DTE = DTE;
        DTE.Events.WindowEvents.WindowActivated += OnWindowActivated;   
    }

    public void Close() {
        // i read somewhere this has to be done on close. 
        // but it gives gives me error on every IDE close. so i commented it .
        //DTE.Events.WindowEvents.WindowActivated -= OnWindowActivated;
    }

    private void OnWindowActivated(Window gotFocus, Window lostFocus) {
            HidePropertiesWindowInCodeOrTextView(gotFocus );
    }

    public void HidePropertiesWindowInCodeOrTextView(Window gotFocus ) {
           if (gotFocus.Document == null) return;
              var pwin = DTE.Windows.Item(Constants.vsWindowKindProperties);
              pwin.AutoHides  = !gotFocus.Caption.EndsWith(" [Design]") ;
    }
}

0

与其放弃屏幕右侧的空间,我将我的属性和工具箱窗格拖到左侧框架上,该框架托管解决方案资源管理器和类视图等。我宁愿在屏幕的一侧拥有一个多功能框,而不是被代码包围。如果您需要两者,可以将工具箱放在解决方案资源管理器窗格中,然后将属性窗格堆叠在解决方案资源管理器下面,这样可以始终查看一些属性和工具箱。

我知道这不完全是您要寻找的答案,但这是一种保持屏幕房地产可用于代码的不同方式,而不会干扰自动隐藏(我发现自动隐藏实际上更令人讨厌,而不是有帮助)。


0

针对vs2019:

我改进了bh_earth0的解决方案。现在它可以保存属性和工具箱的可见性状态,当您跳转到代码时。当激活设计选项卡时,它会加载面板的先前状态。

菜单 > 扩展 > 管理扩展
找到并安装 "Visual Commander"。(现在有一个名为“VCmd”的新菜单)
菜单 > “VCmd” > 扩展...(您将看到右侧的扩展窗格)
在扩展窗格中按添加按钮。(新选项卡窗口将打开。)
为扩展写一个名称(例如 AutoHide)。
选择 C# 语言。
复制并粘贴下面的代码:
按保存,然后按编译,再按安装
重新启动 Visual Studio 并享受 :-)

-1

如果您在这些工具窗口上点击“固定”图标,您可以切换窗口是否始终保持打开状态,或者只有当鼠标靠近它们时才打开。当然,有时我的鼠标会偏向那个方向,它们会在我不想要它们的时候弹出来,但这就是生活...


是的,我知道这个引脚,但那不是我要找的。 :) - theycallmemorty

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