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


Управление настраиваемыми областями задач в нескольких окнах приложений

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

Применение

Сведения, приведенные в данном разделе, относятся только к указанным проектам Visual Studio Tools for Office и версиям приложений Microsoft Office.

Тип проекта

  • Проекты уровня приложения

Приложение Microsoft Office

  • Excel 2007

  • InfoPath 2007

  • Outlook 2007

  • PowerPoint 2007

  • Word 2007

Дополнительные сведения см. в разделе Доступность функций по типам приложений и проектов.

При создании настраиваемой области задач в приложении, в котором для отображения документов и других элементов используются несколько окон, необходимо предпринять дополнительные действия для того, чтобы эта область задач оставалась видимой тогда, когда она может потребоваться пользователю.

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

Следующие группы приложений имеют различные требования к разработке:

  • Outlook

  • Word и InfoPath

  • Excel и PowerPoint

Outlook

При создании настраиваемой области задач для Outlook она сопоставляется с определенным окном проводника или инспектора. Проводники — это окна, в которых отображается содержимое папки, инспекторы — это окна, в которых отображается элемент, например сообщение электронной почты или задача.

Чтобы отобразить настраиваемую область задач с несколькими окнами проводника или инспектора, необходимо создать новый экземпляр настраиваемой области задач при открытии окна проводника или инспектора. Для этого обработайте событие, вызываемое при создании окна проводника или инспектора, а затем создайте область задач в обработчике событий. Можно также обработать события проводника или инспектора для скрытия и отображения областей задач в зависимости от отображаемого окна.

Чтобы связать область задач с конкретным обозревателем или инспектором, используйте метод CustomTaskPaneCollection.Add(UserControl, String, Object) для создания области задач и передайте объект Explorer или Inspector в параметр window. Дополнительные сведения о создании настраиваемых областей задач см. в разделе Общие сведения о настраиваемых областях задач.

Пошаговое руководство по созданию области задач для каждого открытого сообщения электронной почты см. в разделе Пошаговое руководство. Отображение в Outlook настраиваемых областей задач с сообщениями электронной почты.

События Outlook

Чтобы отслеживать состояние окон обозревателя, можно обрабатывать следующие события, связанные с обозревателем:

Чтобы отслеживать состояние окон проводника, можно обрабатывать следующие события, связанные с инспектором:

Предотвращение появления нескольких экземпляров настраиваемой области задач в Outlook

Чтобы предотвратить отображение нескольких экземпляров настраиваемой области задач в окнах Outlook, явно удалите настраиваемую область задач из коллекции CustomTaskPanes класса ThisAddIn при закрытии каждого окна. Вызовите метод Remove в событии, возникающем при закрытии окна, например ExplorerEvents_10_Event.Close или InspectorEvents_10_Event.Close.

Если не удалить настраиваемую область задач явным образом, в окнах Outlook могут отображаться несколько экземпляров настраиваемой области задач. В Outlook окна иногда запускаются повторно, такие окна сохраняют ссылки на любые назначенные им настраиваемые области задач.

Word и InfoPath

В приложениях Word и InfoPath каждый документ отображается в отдельном окне фрейма документа. При создании настраиваемой области задач для этих приложений она сопоставляется только с определенным документов. Если пользователь открывает другой документ, настраиваемая область задач скрывается до тех пор, пока не будет отображен предыдущий документ.

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

Чтобы связать область задач с конкретным окном документа, используйте метод CustomTaskPaneCollection.Add(UserControl, String, Object) для создания области задач и передайте Microsoft.Office.Interop.Word.Window (для Word) или Microsoft.Office.Interop.InfoPath.WindowObject (для InfoPath) в параметр window. Дополнительные сведения о создании настраиваемых областей задач см. в разделе Общие сведения о настраиваемых областях задач.

События Word

Чтобы отслеживать состояние окон документа в приложении Word, можно обрабатывать следующие события:

События InfoPath

Чтобы отслеживать состояние окон документа в приложении InfoPath, можно обрабатывать следующие события:

Excel и PowerPoint

В приложениях Excel и PowerPoint для всех документов (книги и презентации) создается одно окно фрейма документа. При создании настраиваемой области задач в этих приложениях она доступна для каждого открытого в приложении документа. При этом не требуется никаких дополнительных действий, чтобы обеспечить отображение области задач для каждого документа.

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

События Excel

Чтобы отслеживать состояние книг в приложении Excel, можно обрабатывать следующие события:

События PowerPoint

Чтобы отслеживать состояние презентаций в приложении PowerPoint, можно обрабатывать следующие события:

  • Microsoft.Office.Interop.PowerPoint.EApplication_Event.AfterNewPresentation

  • Microsoft.Office.Interop.PowerPoint.EApplication_Event.AfterPresentationOpen

  • Microsoft.Office.Interop.PowerPoint.EApplication_Event.NewPresentation

  • Microsoft.Office.Interop.PowerPoint.EApplication_Event.PresentationOpen

  • Microsoft.Office.Interop.PowerPoint.EApplication_Event.WindowActivate

  • Microsoft.Office.Interop.PowerPoint.EApplication_Event.WindowDeactivate

Пример

В следующем примере кода показано, как скрыть или отобразить настраиваемую область задач в обработчике событий для события WorkbookActivate в надстройке Excel. При активации каждой книги область задач отображается только в том случае, если эта книга имеет имя SalesData.xls, в противном случае область задач не отображается. Чтобы запустить данный пример, замените используемый по умолчанию обработчик событий ThisAddIn_Startup, создаваемый Visual Studio Tools for Office в классе ThisAddIn, на следующий код. В данном примере предполагается, что в проект входит UserControl с именем UserControl1.

Dim myUserControl As UserControl1
Dim myCustomTaskPane As Microsoft.Office.Tools.CustomTaskPane

Private Sub ThisAddIn_Startup(ByVal sender As Object, ByVal e As System.EventArgs) _
Handles Me.Startup
    myUserControl = New UserControl1()
    myCustomTaskPane = Me.CustomTaskPanes.Add(myUserControl, "Sales Task Pane")
End Sub

Private Sub Application_WorkbookActivate(ByVal Wb As Excel.Workbook) _
    Handles Application.WorkbookActivate

    If Wb.Name = "SalesData.xlsx" Then
        myCustomTaskPane.Visible = True
    Else
        myCustomTaskPane.Visible = False
    End If
End Sub
private UserControl1 myUserControl;
private Microsoft.Office.Tools.CustomTaskPane myCustomTaskPane;

private void ThisAddIn_Startup(object sender, System.EventArgs e)
{
    this.Application.WorkbookActivate += new Excel.AppEvents_WorkbookActivateEventHandler(
        Application_WorkbookActivate);

    myUserControl = new UserControl1();
    myCustomTaskPane = this.CustomTaskPanes.Add(myUserControl, "Sales Task Pane");
}

void Application_WorkbookActivate(Excel.Workbook Wb)
{
    if (Wb.Name == "SalesData.xlsx")
        myCustomTaskPane.Visible = true;
    else
        myCustomTaskPane.Visible = false;
}

См. также

Задачи

Практическое руководство. Добавление настраиваемой панели задач в приложение

Пошаговое руководство. Отображение в Outlook настраиваемых областей задач с сообщениями электронной почты

Практическое руководство. Отображение настраиваемых областей задач с сообщениями электронной почты в Outlook

Пошаговое руководство. Синхронизация настраиваемой области задач с кнопкой на ленте

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

Общие сведения о настраиваемых областях задач