Скрыть свойства/панель инструментов, если нет в представлении ресурсов?
Каждый раз, когда я просматриваю форму или диалог в Visual Studio (2005), панели свойств и панели инструментов отображаются в правой части экрана. Это хорошо, потому что они полезны для манипулирования диалоговыми окнами.
Однако, как только я вернусь к исходному коду, эти панели просто мешают... есть ли способ заставить их автоматически уйти?
Ответы
Ответ 1
Недавно я сделал что-то в VS2010, используя макрос, который показывает и скрывает панель "Инструменты" при переключении взад и вперед от кода к дизайну в представлениях asp.net MVC3. Это можно легко адаптировать, чтобы сделать то же самое для вашей ситуации, я думаю.
Это происходит в файле класса EnvironmentEvents
, который находится в среде макросов VS Macro после предварительно созданного содержимого.
<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
Вероятно, он лучше оптимизирован с использованием команд события, а не операторов if. Он работает, когда вы используете горячие клавиши для переключения видов, а также меню просмотра, но не контекстное меню.
Ответ 2
для vs2015:
- Меню > Инструменты > Расширения и обновления
- установите "Visual Commander". (Теперь у вас есть новое меню под названием "VCmd" )
- Меню > "VCmd" > Расширения... (Вы увидите панель расширения справа)
- Нажмите кнопку "Добавить" на панели "Расширения". (Открывается новая вкладка WIndow.)
- напишите имя для расширения.
- выберите язык как С#.
- вставьте следующий код:
- Нажмите "Сохранить". Затем нажмите "Скомпилировать". Затем нажмите "Установить"
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]") ;
}
}
Ответ 3
Вместо того, чтобы отказаться от пространства в правой части экрана, я перетащил свои свойства и панели инструментов в левый кадр, на котором размещены проводник решений и класс, и т.д. Я бы предпочел, с одной стороны экрана, чем для окружения кода. Если вам нужны они оба, вы можете поместить панель инструментов в панель проводника решений, а затем соединить панель свойств под браузером решений, которая всегда сохраняет несколько свойств в поле зрения вместе с панелью инструментов.
Я знаю, что это не совсем тот ответ, который вы искали, но это другой способ сохранить эту экранную недвижимость, доступную для кода, не путаясь с авто-скрыть (я считаю, что авто-скрыть действительно раздражает больше, чем помощь.)
Ответ 4
Если вы нажмете значок "pin" на этих окнах инструментов, вы можете переключать, будут ли окна оставаться открытыми все время или только когда мышь находится рядом с ними. Конечно, иногда моя мышь уклоняется в этом направлении, и они выскакивают, когда я их не хочу, но такая жизнь...