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


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

Это пошаговое руководство демонстрирует, как создавать настройку на уровне документа, использующую элементы управления содержимым для создания в шаблоне Microsoft Office Word структурированного содержимого с возможностью повторного использования.

Применение. Сведения этого раздела применяются к проектам уровня документа для Word 2013 и Word 2010. Дополнительные сведения см. в разделе Доступность функций по типам приложений Office и проектов.

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

После создания документа на основе шаблона можно добавить в документ любую из таблиц, используя объекты BuildingBlockGalleryContentControl, отображающие доступные стандартные блоки шаблона.

В данном пошаговом руководстве рассмотрены следующие задачи:

  • создание таблиц, содержащих элементы управления содержимым в шаблоне Word во время разработки;

  • заполнение программным путем элемента управления "поле со списком" и "раскрывающийся список";

  • применение к указанной таблице режима защиты от редактирования;

  • добавление таблиц в коллекцию стандартных блоков шаблона;

  • создание элемента управления содержимым, отображающего доступные стандартные блоки шаблона.

ПримечаниеПримечание

На вашем компьютере названия некоторых элементов интерфейса пользователя Visual Studio или их расположение могут отличаться от указанных в нижеследующих инструкциях. Это зависит от имеющегося выпуска Visual Studio и используемых параметров. Дополнительные сведения см. в разделе Параметры Visual Studio.

Обязательные компоненты

Ниже приведены компоненты, необходимые для выполнения данного пошагового руководства.

-

Выпуск Visual Studio 2012, включающий инструменты разработчика Microsoft Office. Дополнительные сведения см. в разделе [Настройка компьютера для разработки решений Office](bb398242\(v=vs.110\).md).
  • Word 2013 или Word 2010.

Создание нового проекта шаблона Word

Создайте шаблон Word для упрощения создания последующих копий.

Создание нового проекта шаблона Word

  • Создайте шаблон проекта Word с именем MyBuildingBlockTemplate.В мастере создайте новый документ.Дополнительные сведения см. в разделе Практическое руководство. Создание проектов Office в Visual Studio.

    Среда Visual Studio открывает новый шаблон Word в режиме конструктора и добавляет проект MyBuildingBlockTemplate в Обозреватель решений.

Создание таблицы сотрудников

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

Создание таблицы сотрудников

  1. В шаблоне Word, который размещен в конструкторе Visual Studio, щелкните на ленте вкладку Вставка.

  2. В группе Таблицы нажмите Таблица и вставьте таблицу с 2 столбцами и 4 строками.

  3. Введите текст в первом столбце, как показано ниже.

    Имя сотрудника

    Дата приема на работу

    Заголовок

    Рисунок

  4. Во втором столбце щелкните первую ячейку (после текста Имя сотрудника).

  5. В ленте щелкните вкладку Разработчик.

    ПримечаниеПримечание

    Если вкладка Разработчик не отображается в ленте, то ее следует сначала отобразить.Дополнительные сведения см. в разделе Практическое руководство. Отображение вкладки разработчика на ленте.

  6. В группе Элементы управления нажмите кнопку ТекстPlainTextContentControl, чтобы добавить элемент управления PlainTextContentControl в первую ячейку.

  7. Во втором столбце щелкните вторую ячейку (после текста Дата приема на работу).

  8. В группе Элементы управления нажмите кнопку Выбор датыDatePickerContentControl, чтобы добавить элемент управления DatePickerContentControl во вторую ячейку.

  9. Во втором столбце щелкните третью ячейку (после текста Должность).

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

  11. Во втором столбце щелкните последнюю ячейку (после текста Изображение).

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

Создание таблицы отзывов пользователей

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

Создание таблицы отзывов пользователей

  1. В шаблоне Word щелкните строку, следующую за добавленной ранее таблицей сотрудников, и нажмите ВВОД, чтобы добавить новый абзац.

  2. Откройте на ленте вкладку Вставка.

  3. В группе Таблицы нажмите Таблица и вставьте таблицу с 2 столбцами и 3 строками.

  4. Введите текст в первом столбце, как показано ниже.

    Имя клиента

    Степень удовлетворенности

    Комментарии

  5. Во втором столбце щелкните первую ячейку (после текста Имя пользователя).

  6. В ленте щелкните вкладку Разработчик.

  7. В группе Элементы управления нажмите кнопку ТекстPlainTextContentControl, чтобы добавить элемент управления PlainTextContentControl в первую ячейку.

  8. Во втором столбце щелкните вторую ячейку (после текста Степень удовлетворенности).

  9. В группе Элементы управления нажмите кнопку Раскрывающийся списокDropDownListContentControl, чтобы добавить элемент управления DropDownListContentControl во вторую ячейку.

  10. Во втором столбце щелкните последнюю ячейку (после текста Примечания).

  11. В группе Элементы управления нажмите кнопку Текст в формате RTFRichTextContentControl, чтобы добавить элемент управления RichTextContentControl в последнюю ячейку.

Заполнение поля со списком и раскрывающегося списка программным путем

Элементы управления содержимым можно инициализировать во время разработки с помощью окна Свойства в Visual Studio.Также их можно инициализировать во время выполнения, что дает возможность динамически задавать их начальное состояние.В данном пошаговом руководстве используется код для заполнения ComboBoxContentControl и DropDownListContentControl во время выполнения для наглядной демонстрации работы этих объектов.

Изменение пользовательского интерфейса элементов управления содержимым программным путем

  1. В Обозревателе решений щелкните правой кнопкой мыши файл ThisDocument.cs или ThisDocument.vb, а затем нажмите Просмотреть код.

  2. Добавьте в класс ThisDocument следующий код.Данный код объявляет несколько объектов, используемых далее в пошаговом руководстве.

    Private GroupControl1 As Microsoft.Office.Tools.Word.GroupContentControl
    Private BuildingBlockControl1 As Microsoft.Office.Tools.Word.BuildingBlockGalleryContentControl
    Private BuildingBlockControl2 As Microsoft.Office.Tools.Word.BuildingBlockGalleryContentControl
    
    private Microsoft.Office.Tools.Word.GroupContentControl groupControl1;
    private Microsoft.Office.Tools.Word.BuildingBlockGalleryContentControl buildingBlockControl1;
    private Microsoft.Office.Tools.Word.BuildingBlockGalleryContentControl buildingBlockControl2;
    
  3. Добавьте следующий код в метод ThisDocument_Startup класса ThisDocument.Данный код добавляет записи в ComboBoxContentControl и DropDownListContentControl в таблицах и задает заполняющий текст, отображаемый в каждом из этих элементов управления перед тем, как пользователь внесет свои изменения.

    ComboBoxContentControl1.PlaceholderText = "Choose a title, or enter your own"
    ComboBoxContentControl1.DropDownListEntries.Add("Engineer", "Engineer", 0)
    ComboBoxContentControl1.DropDownListEntries.Add("Designer", "Designer", 1)
    ComboBoxContentControl1.DropDownListEntries.Add("Manager", "Manager", 2)
    
    DropDownListContentControl1.PlaceholderText = _
        "Choose a rating (1 lowest, 3 highest)"
    DropDownListContentControl1.DropDownListEntries.Add("1", "1", 0)
    DropDownListContentControl1.DropDownListEntries.Add("2", "2", 1)
    DropDownListContentControl1.DropDownListEntries.Add("3", "3", 2)
    
    comboBoxContentControl1.PlaceholderText = "Choose a title, or enter your own";
    comboBoxContentControl1.DropDownListEntries.Add("Engineer", "Engineer", 0);
    comboBoxContentControl1.DropDownListEntries.Add("Designer", "Designer", 1);
    comboBoxContentControl1.DropDownListEntries.Add("Manager", "Manager", 2);
    
    dropDownListContentControl1.PlaceholderText =
        "Choose a rating (1 lowest, 3 highest)";
    dropDownListContentControl1.DropDownListEntries.Add("1", "1", 0);
    dropDownListContentControl1.DropDownListEntries.Add("2", "2", 1);
    dropDownListContentControl1.DropDownListEntries.Add("3", "3", 2);
    

Применение к таблице сотрудников режима защиты от редактирования

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

Применение к таблице сотрудников режима защиты от редактирования

  • После добавленного на предыдущем этапе кода добавьте следующий код в метод ThisDocument_Startup класса ThisDocument.Данный код предотвращает изменение таблицы сотрудников, а именно добавление таблицы в объявленный ранее объект GroupContentControl.

    Me.Tables(1).Select()
    GroupControl1 = Me.Controls.AddGroupContentControl("groupControl1")
    
    this.Tables[1].Range.Select();
    groupControl1 = this.Controls.AddGroupContentControl("groupControl1");
    

Добавление таблиц в коллекцию стандартных блоков

Добавьте таблицы в коллекцию стандартных блоков шаблона, чтобы иметь возможность вставлять созданные в документе таблицы.Дополнительные сведения о стандартных блоках документа см. в разделе Элементы управления содержимым.

Добавление таблиц в стандартные блоки шаблона

  1. После добавленного на предыдущем этапе кода добавьте следующий код в метод ThisDocument_Startup класса ThisDocument.Данный код добавляет новые стандартные блоки, содержащие таблицы, в коллекцию Microsoft.Office.Interop.Word.BuildingBlockEntries, которая содержит все повторно используемые стандартные блоки шаблона.Новые стандартные блоки определяются в новую категорию с именем Информация о сотрудниках и пользователях и присваиваются типу стандартных блоков Microsoft.Office.Interop.Word.WdBuildingBlockTypes.wdTypeCustom1.

    Dim template1 As Word.Template = TryCast(Me.AttachedTemplate, Word.Template)
    If template1 IsNot Nothing Then
    
        template1.BuildingBlockEntries.Add("Employee Table", _
            Word.WdBuildingBlockTypes.wdTypeCustom1, "Employee and Customer Information", _
            Me.Tables(1).Range, InsertOptions:=Word.WdDocPartInsertOptions.wdInsertContent)
        template1.BuildingBlockEntries.Add("Customer Table", _
            Word.WdBuildingBlockTypes.wdTypeCustom1, "Employee and Customer Information", _
            Me.Tables(2).Range, InsertOptions:=Word.WdDocPartInsertOptions.wdInsertContent)
    End If
    
    Word.Template template1 = this.AttachedTemplate as Word.Template;
    
    if (template1 != null)
    {
        object description = null;
        template1.BuildingBlockEntries.Add("Employee Table",
            Word.WdBuildingBlockTypes.wdTypeCustom1, "Employee and Customer Information",
            this.Tables[1].Range, ref description, Word.WdDocPartInsertOptions.wdInsertContent);
        template1.BuildingBlockEntries.Add("Customer Table",
            Word.WdBuildingBlockTypes.wdTypeCustom1, "Employee and Customer Information",
            this.Tables[2].Range, ref description, Word.WdDocPartInsertOptions.wdInsertContent);
    }
    
  2. После добавленного на предыдущем этапе кода добавьте следующий код в метод ThisDocument_Startup класса ThisDocument.Данный код удаляет таблицы из шаблона.Таблицы больше не требуются, поскольку они добавлены в галерею повторно используемых стандартных блоков шаблона.Код помещает документ в режим конструктора для возможности удаления защищенной таблицы сотрудников.

    If Me.FormsDesign = False Then
        Me.ToggleFormsDesign()
    End If
    Me.Tables(2).Delete()
    Me.Tables(1).Delete()
    Me.ToggleFormsDesign()
    
    if (!this.FormsDesign)
    {
        this.ToggleFormsDesign();
    }
    this.Tables[2].Delete();
    this.Tables[1].Delete();
    this.ToggleFormsDesign();
    

Создание элемента управления содержимым, отображающего стандартные блоки

Создайте элемент управления содержимым, предоставляющий доступ к ранее созданным стандартным блокам (т.е. таблицам).Можно щелкнуть этот элемент управления, чтобы добавить таблицы в документ.

Создание элемента управления содержимым, отображающего стандартные блоки

  • После добавленного на предыдущем этапе кода добавьте следующий код в метод ThisDocument_Startup класса ThisDocument.Данный код инициализирует объявленный ранее объект BuildingBlockGalleryContentControl.BuildingBlockGalleryContentControl отображает все стандартные блоки, определенные в категорию с именем Информация о сотрудниках и пользователях и имеющие тип стандартных блоков Microsoft.Office.Interop.Word.WdBuildingBlockTypes.wdTypeCustom1.

    BuildingBlockControl1 = Me.Controls.AddBuildingBlockGalleryContentControl( _
        Me.Paragraphs(1).Range, "buildingBlockControl1")
    BuildingBlockControl1.BuildingBlockCategory = "Employee and Customer Information"
    BuildingBlockControl1.BuildingBlockType = Word.WdBuildingBlockTypes.wdTypeCustom1
    BuildingBlockControl1.PlaceholderText = "Choose your first building block"
    
    BuildingBlockControl2 = Me.Controls.AddBuildingBlockGalleryContentControl( _
        Me.Paragraphs(2).Range, "buildingBlockControl2")
    BuildingBlockControl2.BuildingBlockCategory = "Employee and Customer Information"
    BuildingBlockControl2.BuildingBlockType = Word.WdBuildingBlockTypes.wdTypeCustom1
    BuildingBlockControl2.PlaceholderText = "Choose your second building block"
    
    buildingBlockControl1 = this.Controls.AddBuildingBlockGalleryContentControl(
        this.Paragraphs[1].Range, "buildingBlockControl1");
    buildingBlockControl1.BuildingBlockCategory = "Employee and Customer Information";
    buildingBlockControl1.BuildingBlockType = Word.WdBuildingBlockTypes.wdTypeCustom1;
    buildingBlockControl1.PlaceholderText = "Choose your first building block";
    
    buildingBlockControl2 = this.Controls.AddBuildingBlockGalleryContentControl(
        this.Paragraphs[2].Range, "buildingBlockControl2");
    buildingBlockControl2.BuildingBlockCategory = "Employee and Customer Information";
    buildingBlockControl2.BuildingBlockType = Word.WdBuildingBlockTypes.wdTypeCustom1;
    buildingBlockControl2.PlaceholderText = "Choose your second building block";
    

Проверка проекта

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

Тестирование таблицы сотрудников

  1. Чтобы запустить проект, нажмите клавишу F5.

  2. Щелкните Выбрать первый стандартный блок для отображения элемента управления первого стандартного блока.

  3. В элементе управления щелкните стрелку раскрывающегося списка рядом с заголовком Галерея пользователя 1 и выберите Таблица сотрудников.

  4. Щелкните ячейку справа от ячейки Имя сотрудника и введите имя.

    Убедитесь, что данная ячейка содержит только текст.Кроме текста PlainTextContentControl не позволяет добавлять другие типы содержимого, например изображения или таблицы.

  5. Щелкните ячейку справа от ячейки Должность и выберите дату в элементе управления выбора даты.

  6. Щелкните ячейку справа от ячейки Должность и выберите в поле со списком одну из перечисленных должностей.

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

  7. Щелкните значок в ячейке справа от ячейки Изображение и выберите изображение для отображения.

  8. Попробуйте добавить/удалить строки и столбцы в таблице.Убедитесь в том, что невозможно произвести изменения.GroupContentControl защищает документ от редактирования.

Тестирование таблицы отзывов пользователей

  1. Щелкните Выбрать второй стандартный блок для отображения элемента управления второго стандартного блока.

  2. В элементе управления щелкните стрелку раскрывающегося списка рядом с заголовком Галерея пользователя 1 и выберите Таблица пользователей.

  3. Щелкните ячейку справа от ячейки Имя пользователя и введите имя.

  4. Щелкните ячейку справа от ячейки Степень удовлетворенности и выберите один из доступных параметров.

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

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

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

  6. Убедитесь в том, что можно добавлять/удалять строки и столбцы в таблице.Это возможно благодаря тому, что к таблице не применялся режим защиты с помощью помещения ее в GroupContentControl.

  7. Закройте шаблон.

Следующие действия

Дополнительные сведения об использовании элементов управления содержимым см. в следующем разделе:

См. также

Задачи

Практическое руководство. Добавление элементов управления содержимым в документы Word

Практическое руководство. Защита частей документов с помощью элементов управления содержимым

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

Автоматизация Word с помощью расширенных объектов

Элементы управления содержимым

Общие сведения о ведущих элементах и элементах управления ведущего приложения

Программные ограничения ведущих элементов и элементов управления ведущего приложения

Добавление элементов управления в документы Office во время выполнения