每次在Visual Studio(2005年版)中查看表单或对话框时,属性和工具箱窗格会显示在屏幕右侧。这很有用,因为它们可以用来操作对话框。
但是,一旦切换回源代码,这些窗格就会妨碍操作... 有没有一种自动隐藏它们的方法?
但是,一旦切换回源代码,这些窗格就会妨碍操作... 有没有一种自动隐藏它们的方法?
最近我在使用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语句可能会更好地进行优化。当您使用快捷键切换视图以及视图菜单时,它可以正常工作,但在上下文菜单中无法正常工作。
针对VS2015:
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]") ;
}
}
与其放弃屏幕右侧的空间,我将我的属性和工具箱窗格拖到左侧框架上,该框架托管解决方案资源管理器和类视图等。我宁愿在屏幕的一侧拥有一个多功能框,而不是被代码包围。如果您需要两者,可以将工具箱放在解决方案资源管理器窗格中,然后将属性窗格堆叠在解决方案资源管理器下面,这样可以始终查看一些属性和工具箱。
我知道这不完全是您要寻找的答案,但这是一种保持屏幕房地产可用于代码的不同方式,而不会干扰自动隐藏(我发现自动隐藏实际上更令人讨厌,而不是有帮助)。
针对vs2019:
我改进了bh_earth0的解决方案。现在它可以保存属性和工具箱的可见性状态,当您跳转到代码时。当激活设计选项卡时,它会加载面板的先前状态。
菜单 > 扩展 > 管理扩展如果您在这些工具窗口上点击“固定”图标,您可以切换窗口是否始终保持打开状态,或者只有当鼠标靠近它们时才打开。当然,有时我的鼠标会偏向那个方向,它们会在我不想要它们的时候弹出来,但这就是生活...