Поделиться через


Практическое руководство. Управление окном динамической справки

Обновлен: Ноябрь 2007

Visual Studio имеет окно Динамическая справка, в котором представлены ссылки на связанные разделы справки на основе контекста пользователя. Например, если начать редактирование в редакторе кода, в окне Динамическая справка откроется раздел с описанием использования редактора кода. Это происходит благодаря сравнению ключевых слов, относящихся к текущему проекту, со списком ключевых слов, которые связаны с разделами справки.

При помощи коллекции ContextAttributes и объекта ContextAttribute можно вывести список набора ключевых слов, которые применяются к заданному окну в Visual Studio. С их помощью можно также добавлять атрибуты и определять их приоритет. Таким образом, клиенты автоматизации могут выводить разделы на выбор в окне Динамическая справка при выборе такого окна или элемента окна, например вкладки или ссылки.

Объект ContextAttribute предоставляет контекст конкретного окна или элемента окна, тогда как коллекция ContextAttributes содержит все объекты ContextAttribute данного окна. Контекст состоит из контекстов трех типов: Filter, Lookup и LookupF1:

Filter

В коллекцию контекста добавляется атрибут. Атрибуты представляют собой пары "имя-значение", используемые либо для фильтрации списка разделов, отображаемых в окне Динамическая справка при вызове справки по F1 или по ключевому слову, либо для задания раздела, отображаемого по нажатию F1.

Lookup

В коллекцию контекста добавляется ключевое слово. Раздел, соответствующий этому ключевому слову, будет отображаться в окне Динамическая справка. Ключевые слова поиска задают список справочных и родственных разделов, отображаемых в окне Динамическая справка. Как только пользователь изменяет текущее выделение, в окне Динамическая справка обновляется список разделов, выдаваемых по ключевому слову. Ключевые слова подстановки берутся из того же источника, что и ключевые слова предметного указателя скомпилированного файла справки.

LookupF1

Раздел, соответствующий этому ключевому слову, отображается в окне Динамическая справка и используется для поиска разделов справки, вызываемых нажатием клавиши F1. Ключевые слова F1 определяют раздел справки, если выбран контекстный элемент, например окно инструмента, редактор или модальное диалоговое окно, и нажата клавиша F1. Разделы, связанные с ключевыми словами F1, также перечислены в окне Динамическая справка. В коллекцию контекста добавляется ключевое слово F1.

Три типа атрибутов контекста, указывающих на происхождение объекта ContextAttributes:

Global

Глобальный контекст интегрированной среды разработки (IDE).

High Priority

Коллекция контекста с высоким приоритетом. Наличие атрибута High Priority для контекста означает, что ссылка на раздел будет отображаться в окне Динамическая справка в верхней части соответствующей группы ссылок.

Window

Контекст окна.

Коллекция ContextAttributes доступна из следующих объектов:

ContextAttributes

Эта коллекция затрагивает коллекцию глобального контекста, который применяется в последнюю очередь при сортировке разделов.

ContextAttributes

Влияет на коллекцию контекстов окна. Для окон инструментов атрибуты действительны только в том случае, если окно является выбранным. Для редакторов и конструкторов атрибуты действительны до тех пор, пока редактор является последним активным дочерним окном MDI. Если значение свойства HighPriorityAttributes равно True, то атрибуты действуют всегда и применяются в первую очередь.

После того, как ключевое слово связано с окном или элементом окна, его можно использовать для отображения раздела справки. При помощи поставщика справки XML можно вывести пользовательский раздел справки или URL-адрес. Дополнительные сведения можно получить в разделе справки SDK для Visual Studio Industry Partner (VSIP), выполнив поиск по словам "Поставщик справки XML и динамическая справка".

Управлять можно не только содержимым окна Динамическая справка, но и также такими его характеристиками, как ширина и высота. Дополнительные сведения см. в разделе Практическое руководство. Изменение параметров окон.

При использовании ContextAttributes и ContextAttribute можно:

  • Добавлять или удалять имя, значение и тип ключевого слова.

  • Получать имя и значение ключевого слова.

  • В виде семейства ContextAttributes получать список атрибутов с наивысшим приоритетом из DTE.ContextAttributes.

f88ctah3.alert_note(ru-ru,VS.90).gifПримечание.

Отображаемые диалоговые окна и команды меню могут отличаться от описанных в справке в зависимости от текущих параметров или выпуска. Эти процедуры были разработаны с обычными параметрами разработки. Чтобы изменить настройки, в меню Сервис выберите команду Импорт и экспортпараметров. Дополнительные сведения см. в разделе Параметры Visual Studio.

Пример

В следующем примере надстройки показано, как использовать различные члены модели автоматизации Динамическая справка и ссылаться на них. В этом примере на экран выводится список имен и количество ключевых слов, связанных с Обозревателем решений. В нем также добавляется новое ключевое слово F1, которое затем удаляется. Дополнительные сведения о запуске этого примера в виде надстройки или макроса Visual Studio см. в разделе Практическое руководство. Компиляция и выполнение примеров кода модели объектов автоматизации.

Public Sub OnConnection(ByVal application As Object, ByVal _
connectMode As ext_ConnectMode, ByVal addInInst As Object, _
ByRef custom As Array) Implements IDTExtensibility2.OnConnection
    _applicationObject = CType(application, DTE2)
    _addInInstance = CType(addInInst, AddIn)
    ' Pass the applicationObject member variable to the code example.
    CATest(_applicationObject)
End Sub

Sub CATest(ByVal dte As DTE2)
    ' Get a reference to Solution Explorer.
    Dim SolnEx As Window = _applicationObject.Windows.Item(Constants. _
    vsWindowKindSolutionExplorer)
    Dim CA As ContextAttribute

    ' List the current attributes associated with Solution Explorer.
    ListAttr(SolnEx, CA)

    ' Associate a new F1 keyword to Solution Explorer.
    SolnEx.ContextAttributes.Add("ANewKeyword", "900", _
    vsContextAttributeType.vsContextAttributeLookupF1)
    ListAttr(SolnEx, CA)

    ' Delete the new F1 keyword from Solution Explorer.
    SolnEx.ContextAttributes.Item(3).Remove()
    ListAttr(SolnEx, CA)
End Sub

Sub ListAttr(ByVal SolnEx As Object, ByVal CA As ContextAttribute)
    ' Support function for CATest(). Lists the current attributes 
    ' associated with Solution Explorer.
    Dim msg As String
    msg = ""

    MsgBox("Number of context attributes in Solution Explorer: "  _
    & SolnEx.ContextAttributes.Count)
    For Each CA In SolnEx.ContextAttributes
        msg = msg & CA.Name & Chr(13)
    Next
    MsgBox(msg)
    msg = ""
End Sub
public void OnConnection(object application,
 Extensibility.ext_ConnectMode connectMode, object addInInst, ref
 System.Array custom)
{
    _applicationObject = (DTE2)application;
    _addInInstance = (AddIn)addInInst;
    //  Pass the applicationObject member variable to the code example.
    CATest(_applicationObject); 
}

public void CATest( DTE2 dte ) 
{ 
    // Add-in code.
    // Get a reference to Solution Explorer.
    Window SolnEx = dte.Windows.Item
( Constants.vsWindowKindSolutionExplorer ); 
    ContextAttribute CA = null; 

    // List the current attributes associated with Solution Explorer.
    ListAttr( SolnEx, CA ); 

    // Associate a new F1 keyword to Solution Explorer.
    SolnEx.ContextAttributes.Add( "ANewKeyword",
 System.Convert.ToString(900),
 vsContextAttributeType.vsContextAttributeLookupF1 ); 
    ListAttr( SolnEx, CA ); 

    // Delete the new F1 keyword from Solution Explorer.
    SolnEx.ContextAttributes.Item( 2 ).Remove(); 
    ListAttr( SolnEx, CA ); 
} 

public void ListAttr( EnvDTE.Window SolnEx, ContextAttribute CA ) 
{ 
    // Support function for CATest(). Lists the current attributes 
    // associated with Solution Explorer.
    string msg = null; 

    MessageBox.Show
( "Number of context attributes in Solution Explorer: " 
+ SolnEx.ContextAttributes.Count); 
    foreach ( EnvDTE.ContextAttribute temp in 
SolnEx.ContextAttributes ) 
    { 
        CA = temp; 
        msg = msg + CA.Name + "\n"; 
    }
    MessageBox.Show( msg); 
    msg = ""; 
}

См. также

Задачи

Практическое руководство. Изменение параметров окон

Практическое руководство. Создание надстройки

Пошаговое руководство. Создание мастера

Основные понятия

Диаграмма модели объектов автоматизации

Другие ресурсы

Создание окон среды и управление ими

Создание надстроек и мастеров

Справочник по автоматизации и возможностям расширения среды