Обзор области действий

Область действий — это настраиваемая область задач "Действия документа" , которая присоединена к определенному документу Microsoft Office Word или книге Microsoft Office Excel. Область действий размещается в области задач Office вместе с другими встроенными областями задач, такими как область задач источника XML в Excel или область задач "Стили и форматирование " в Word. Для разработки пользовательского интерфейса панели действий можно использовать элементы управления Windows Forms или элементы управления WPF.

Область применения. Сведения в этом разделе относятся к проектам уровня документа для Excel и Word. Дополнительные сведения см. в разделе "Функции", доступные по Приложение Office ликации и типу проекта.

Панель действий можно создать только в настройке на уровне документа Word или Excel. Невозможно создать панель действий в надстройке VSTO. Дополнительные сведения см. в разделе "Функции", доступные по Приложение Office ликации и типу проекта.

Примечание.

Панель действий отличается от настраиваемых областей задач. Настраиваемые области задач связаны с приложением, а не с конкретным документом. Вы можете создавать настраиваемые области задач в надстройках VSTO для некоторых приложений Microsoft Office. Дополнительные сведения см. в разделе "Пользовательские области задач".

Отображение области действий

Панель действий представлена классом ActionsPane. При создании проекта на уровне документа экземпляр данного класса доступен в коде с помощью поля ActionsPane класса ThisWorkbook (для Excel) или ThisDocument (для Word) в проекте. Чтобы отобразить панель действий, добавьте элемент управления Windows Forms в свойство Controls поля ActionsPane. Следующий пример кода добавляет элемент управления с именем actions на панель действий.

this.ActionsPane.Controls.Add(actions);

Область действий становится видимой во время выполнения сразу после явного добавления элемента управления в него. После отображения панели действий вы можете динамически добавлять или удалять элементы управления в ответ на действия пользователя. Как правило, вы добавляете код, чтобы показать панель действий, в обработчик событий Startup для ThisDocument или ThisWorkbook, чтобы панель действий отображалась при первом открытии документа. Однако вам может потребоваться отобразить панель действий только в ответ на действия пользователя в документе. Например, можно добавить код в событие Click элемента управления в документе.

Добавление нескольких элементов управления в область действий

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

  1. Создайте пользовательский интерфейс области действий, добавив элемент управления области действий или элемент пользовательского элемента управления в проект. Оба эти элемента включают пользовательский класс UserControl Windows Forms. Элементы управления "Панель действий" и "Элемент управления пользователем" эквивалентны; единственное различие заключается в их имени.

  2. Добавление элементов управления Windows Forms в UserControl с помощью конструктора или кода.

    Примечание.

    Можно также добавить элементы управления WPF на панель действий, добавив WPF UserControl в UserControl Windows Forms. Дополнительные сведения см. в разделе "Использование элементов управления WPF" в решениях Office.

  3. Добавьте экземпляр настраиваемого пользовательского элемента управления к элементам управления, которые содержатся в поле ActionsPane класса ThisWorkbook (для Excel) или ThisDocument (для Word) в проекте.

    Примеры, демонстрирующие этот процесс более подробно, см. в статье "Практическое руководство. Добавление области действий в документы Word или книги Excel".

Скрытие области действий

Хотя класс ActionsPane содержит метод Hide и свойство Visible, панель действий невозможно удалить из пользовательского интерфейса с помощью членов класса ActionsPane. Hide Вызов метода или установка Visible свойства на значение false скрывает только элементы управления на панели действий; он не скрывает область задач.

Существует несколько способов скрыть область задач в решении.

  • Для Word задайте Visible свойству TaskPane объекта, представляющего область задач "Действия документа" значение false. Код в следующем примере должен выполняться из класса ThisDocument в проекте.

    this.Application.TaskPanes[Word.WdTaskPanes.wdTaskPaneDocumentActions].Visible = false;
    
  • Для Excel задайте DisplayDocumentActionTaskPane для свойства Application объекта значение false. Код в следующем примере должен выполняться из класса ThisWorkbook в проекте.

    this.Application.DisplayDocumentActionTaskPane = false;
    
  • Для Word или Excel можно также задать Visible свойство панели команд, представляющей область задач значение false. Код в следующем примере должен выполняться из класса ThisDocument или ThisWorkbook в проекте.

    this.Application.CommandBars["Task Pane"].Visible = false;
    

Очистка области действий при открытии документа

Когда пользователь сохраняет документ во время отображения области действий, область действий отображается при каждом открытии документа, независимо от того, содержит ли панель действий какие-либо элементы управления. Если вы хотите управлять отображением панели действий, вызовите метод Clear поля ActionsPane в обработчике событий Startup для ThisDocument или ThisWorkbook, чтобы убедиться, что панель действий невидима при открытии документа.

Определите, когда область действий закрыта

При закрытии панели действий события не инициируются. Хотя класс ActionsPane содержит событие VisibleChanged, оно не возникает, когда пользователь закрывает панель действий. Вместо этого это событие возникает, когда элементы управления на панели действий скрыты путем вызова Hide метода или задания Visible свойства false.

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

Отображение панели действий с помощью пользовательского интерфейса Word или Excel
  1. На ленте щелкните вкладку "Вид ".

  2. В группе "Показать и скрыть" нажмите кнопку "Действия документа".

События области действий программы

Вы можете добавить несколько элементов управления на панель действий и затем написать код для реагирования на события в документе, отображая и скрывая пользовательские элементы управления. Если сопоставить элементы схемы XML с вашим документом, вы сможете показывать определенные пользовательские элементы управления в панели действий всякий раз, когда курсор находится внутри одного из XML-элементов. Дополнительные сведения см. в статье "Практическое руководство. Сопоставление схем с документами Word в Visual Studio и практическое руководство. Сопоставление схем с листами в Visual Studio".

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

Привязка данных к элементам управления на панели действий

Возможности привязки данных элементов управления на панели действий аналогичны возможностям элементов управления в формах Windows Forms. Элементы управления можно привязать к источникам данных, таким как наборы данных, типизированные наборы данных и XML-код. Дополнительные сведения см. в разделе "Привязка данных" и Windows Forms.

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

Проверка данных в элементах управления области действий

Если вы показываете окно сообщения в обработчике событий Validating элемента управления на панели действий, это событие может быть вызвано во второй раз при перемещении фокуса с элемента управления на окно сообщения. Чтобы предотвратить это, используйте элемент управления ErrorProvider для отображения сообщений об ошибке проверки.

Порядок стека элементов управления пользователем

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

Свойство StackOrder может принимать следующие значения перечисления StackStyle.

Стиль расположения Определение
FromBottom Размещение от нижней части панели действий.
FromLeft Размещение от левой части панели действий.
FromRight Размещение от правой части панели действий.
FromTop Размещение от верхней части панели действий.
нет Порядок расположения не определен, он определяется разработчиком.

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

this.ActionsPane.StackOrder = Microsoft.Office.Tools.StackStyle.FromTop;

Элементы управления привязкой

Если пользователь изменяет размер области действий во время выполнения, элементы управления могут изменять размер с помощью области действий. Вы можете использовать свойство Anchor элемента управления Windows Forms, чтобы закрепить элементы управления на панели действий. Таким же образом можно закрепить элементы управления Windows Forms на пользовательском элементе управления. Дополнительные сведения см. в разделе "Практическое руководство. Привязка элементов управления в Windows Forms".

Изменение размера области действий

Невозможно напрямую изменить размер ActionsPane, так как ActionsPane внедряется в область задач. Однако можно программно изменить ширину области задач, задав свойство Width объекта CommandBar, представляющего область задач. Вы можете изменить высоту области задач, если она закреплена горизонтально или является перемещаемой.

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

this.CommandBars["Task Pane"].Width = 200;

Изменение положения области действий

Невозможно изменить положение ActionsPane напрямую, так как он внедрен в область задач. Тем не менее можно программно переместить область задач, задав свойство Position объекта CommandBar, представляющего область задач.

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

this.CommandBars["Task Pane"].Position =
    Microsoft.Office.Core.MsoBarPosition.msoBarLeft;

Примечание.

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

Top Установка и Left свойства объекта ActionsPane не изменяют его положение, так как ActionsPane объект внедрен в область задач.

Если область задач не закреплена, можно установить свойства Top и Left объекта CommandBar, представляющего область задач. Следующий код перемещает панель задач в верхний левый угол документа.

if (this.CommandBars["Task Pane"].Position == 
    Microsoft.Office.Core.MsoBarPosition.msoBarFloating)
{
    this.CommandBars["Task Pane"].Top = 0;
    this.CommandBars["Task Pane"].Left = 0;
}