Управление настраиваемыми областями задач в нескольких окнах приложений
Обновлен: Ноябрь 2007
Применение |
---|
Сведения, приведенные в данном разделе, относятся только к указанным проектам Visual Studio Tools for Office и версиям приложений Microsoft Office. Тип проекта
Приложение Microsoft Office
Дополнительные сведения см. в разделе Доступность функций по типам приложений и проектов. |
При создании настраиваемой области задач в приложении, в котором для отображения документов и других элементов используются несколько окон, необходимо предпринять дополнительные действия для того, чтобы эта область задач оставалась видимой тогда, когда она может потребоваться пользователю.
Настраиваемые области задач во всех приложениях связаны с окном фрейма документа, в котором отображается документ или элемент. Область задач видна только тогда, когда отображается соответствующее окно. Однако не во всех приложениях окно фрейма документа используется одинаково.
Следующие группы приложений имеют различные требования к разработке:
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;
}
См. также
Задачи
Практическое руководство. Добавление настраиваемой панели задач в приложение
Пошаговое руководство. Синхронизация настраиваемой области задач с кнопкой на ленте