Пошаговое руководство. Создание шаблона с помощью элементов управления содержимым
Обновлен: Ноябрь 2007
Применение |
---|
Сведения, приведенные в данном разделе, относятся только к указанным проектам Visual Studio Tools for Office и версиям Microsoft Office. Тип проекта
Версия Microsoft Office
Дополнительные сведения см. в разделе Доступность функций по типам приложений и проектов. |
Это пошаговое руководство демонстрирует, как создавать настройку на уровне документа, использующую элементы управления содержимым для создания в шаблоне Microsoft Office Word 2007 структурированного содержимого с возможностью повторного использования.
Приложение Word позволяет создать коллекцию повторно используемых частей документа с именем стандартные блоки. В данном пошаговом руководстве описывается способ создания двух таблиц в качестве стандартных блоков. Каждая таблица содержит несколько элементов управления, отвечающих за разные типы содержимого, например обычный текст или даты. Одна из таблиц содержит информацию о сотруднике, другая — сведения об отзывах пользователей.
После создания документа на основе шаблона можно добавить в документ любую из таблиц, используя объекты BuildingBlockGalleryContentControl, отображающие доступные стандартные блоки шаблона.
В руководстве представлены следующие задачи:
создание таблиц, содержащих элементы управления содержимым в шаблоне Word во время разработки;
заполнение программным путем элемента управления "поле со списком" и "раскрывающийся список";
применение к указанной таблице режима защиты от редактирования;
добавление таблиц в коллекцию стандартных блоков шаблона;
создание элемента управления содержимым, отображающего доступные стандартные блоки шаблона.
Примечание. |
---|
На вашем компьютере названия некоторых элементов интерфейса пользователя Visual Studio или их расположение могут отличаться от указанных в нижеследующих инструкциях. Это зависит от имеющегося выпуска Visual Studio и используемых параметров. Дополнительные сведения см. в разделе Параметры Visual Studio. |
Обязательные компоненты
Для выполнения инструкций данного пошагового руководства необходимы указанные ниже компоненты.
Visual Studio Tools for Office (необязательный компонент Visual Studio 2008 Professional и Visual Studio Team System).
Microsoft Office Word 2007.
Средства Visual Studio Tools for Office устанавливаются по умолчанию с перечисленными версиями Visual Studio. Для того чтобы проверить наличие установки, см. раздел Установка средств Visual Studio для Office.
Создание нового проекта шаблона Word
Создайте шаблон Word 2007 для упрощения создания последующих копий.
Создание нового проекта шаблона Word 2007
Создайте проект шаблона Word с именем MyBuildingBlockTemplate, используя шаблон проекта шаблона Word для Microsoft Office 2007. В мастере создайте новый документ. Дополнительные сведения см. в разделе Практическое руководство. Создание проектов Visual Studio Tools for Office.
Среда Visual Studio открывает новый шаблон Word в режиме конструктора и добавляет проект MyBuildingBlockTemplate в Обозреватель решений.
Создание таблицы сотрудников
Создайте таблицу, содержащую четыре различных типа элементов управления содержимым, в которых пользователь сможет вводить данные о сотруднике.
Создание таблицы сотрудников
В шаблоне Word, который размещен в конструкторе Visual Studio, щелкните на ленте вкладку Вставка.
В группе Таблицы нажмите Таблица и вставьте таблицу с 2 столбцами и 4 строками.
Введите текст в первом столбце, как показано ниже.
Имя сотрудников
Дата приема на работу
Должность
Изображение
Во втором столбце щелкните первую ячейку (после текста Имя сотрудника).
Откройте на ленте вкладку Разработчик.
Примечание. Если вкладка Разработчик не отображается в ленте, то сначала следует ее отобразить. Дополнительные сведения см. в разделе Практическое руководство. Отображение вкладки разработчика на ленте.
В группе Элементы управления нажмите кнопку Текст, чтобы добавить элемент управления PlainTextContentControl в первую ячейку.
Во втором столбце щелкните вторую ячейку (после текста Дата приема на работу).
В группе Элементы управления нажмите кнопку Выбор даты, чтобы добавить элемент управления DatePickerContentControl во вторую ячейку.
Во втором столбце щелкните третью ячейку (после текста Должность).
В группе Элементы управления нажмите кнопку Поле со списком, чтобы добавить элемент управления ComboBoxContentControl в третью ячейку.
Во втором столбце щелкните последнюю ячейку (после текста Изображение).
В группе Элементы управления нажмите кнопку Элемент управления содержимым изображения, чтобы добавить элемент управления PictureContentControl в последнюю ячейку.
Создание таблицы отзывов пользователей
Создайте таблицу, содержащую три различных типа элементов управления содержимым, в которых пользователь сможет вводить данные об отзывах пользователей.
Создание таблицы отзывов пользователей
В шаблоне Word щелкните строку, следующую за добавленной ранее таблицей сотрудников, и нажмите ВВОД, чтобы добавить новый абзац.
Откройте на ленте вкладку Вставка.
В группе Таблицы нажмите Таблица и вставьте таблицу с 2 столбцами и 3 строками.
Введите текст в первом столбце, как показано ниже.
Имя пользователя
Степень удовлетворенности
Примечания
Во втором столбце щелкните первую ячейку (после текста Имя пользователя).
Откройте на ленте вкладку Разработчик.
В группе Элементы управления нажмите кнопку Текст, чтобы добавить элемент управления PlainTextContentControl в первую ячейку.
Во втором столбце щелкните вторую ячейку (после текста Степень удовлетворенности).
В группе Элементы управления нажмите кнопку Раскрывающийся список, чтобы добавить элемент управления DropDownListContentControl во вторую ячейку.
Во втором столбце щелкните последнюю ячейку (после текста Примечания).
В группе Элементы управления нажмите кнопку Текст в формате RTF, чтобы добавить элемент управления RichTextContentControl в последнюю ячейку.
Заполнение поля со списком и раскрывающегося списка программным путем
Элементы управления содержимым можно инициализировать во время разработки с помощью окна Свойства в Visual Studio. Также их можно инициализировать во время выполнения, что дает возможность динамически задавать их начальное состояние. В данном пошаговом руководстве используется код для заполнения ComboBoxContentControl и DropDownListContentControl во время выполнения для наглядной демонстрации работы этих объектов.
Изменение пользовательского интерфейса элементов управления содержимым программным путем
В Обозревателе решений щелкните правой кнопкой мыши файл ThisDocument.cs или ThisDocument.vb, а затем нажмите Просмотреть код.
Добавьте в класс 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;
Добавьте следующий код в метод 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");
Добавление таблиц в коллекцию стандартных блоков
Добавьте таблицы в коллекцию стандартных блоков шаблона, чтобы иметь возможность вставлять созданные в документе таблицы. Дополнительные сведения о стандартных блоках документа см. в разделе Элементы управления содержимым.
Добавление таблиц в стандартные блоки шаблона
После добавленного на предыдущем этапе кода добавьте следующий код в метод 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); }
После добавленного на предыдущем этапе кода добавьте следующий код в метод ThisDocument_Startup класса ThisDocument. Данный код удаляет таблицы из шаблона. Таблицы больше не требуются, поскольку они добавлены в галерею повторно используемых стандартных блоков шаблона. Код помещает документ в режим конструктора для возможности удаления защищенной таблицы сотрудников.
If Me.DesignMode = False Then Me.ToggleFormsDesign() End If Me.Tables(2).Delete() Me.Tables(1).Delete() Me.ToggleFormsDesign()
if (!this.DesignMode) { 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";
Тестирование проекта
Щелчок на элементах управления галереи стандартных блоков в документе вставляет таблицу сотрудников или таблицу отзывов пользователей. Отзывы можно ввести или выбрать в элементах управления содержимым обеих таблиц. Другие части таблицы отзывов пользователей можно изменять, однако не следует изменять другие части таблицы сотрудников.
Тестирование таблицы сотрудников
Нажмите клавишу F5 для запуска проекта.
Щелкните Выбрать первый стандартный блок для отображения элемента управления первого стандартного блока.
В элементе управления щелкните стрелку раскрывающегося списка рядом с заголовком Галерея пользователя 1 и выберите Таблица сотрудников.
Щелкните ячейку справа от ячейки Имя сотрудника и введите имя.
Убедитесь, что данная ячейка содержит только текст. Кроме текста PlainTextContentControl не позволяет добавлять другие типы содержимого, например изображения или таблицы.
Щелкните ячейку справа от ячейки Должность и выберите дату в элементе управления выбора даты.
Щелкните ячейку справа от ячейки Должность и выберите в поле со списком одну из перечисленных должностей.
При необходимости можно ввести название должности, не имеющейся в списке. ComboBoxContentControl дает возможность выбрать нужный параметр из списка или ввести собственную запись.
Щелкните значок в ячейке справа от ячейки Изображение и выберите изображение для отображения.
Попробуйте добавить/удалить строки и столбцы в таблице. Убедитесь в том, что невозможно произвести изменения. GroupContentControl защищает документ от редактирования.
Тестирование таблицы отзывов пользователей
Щелкните Выбрать второй стандартный блок для отображения элемента управления второго стандартного блока.
В элементе управления щелкните стрелку раскрывающегося списка рядом с заголовком Галерея пользователя 1 и выберите Таблица пользователей.
Щелкните ячейку справа от ячейки Имя пользователя и введите имя.
Щелкните ячейку справа от ячейки Степень удовлетворенности и выберите один из доступных параметров.
Убедитесь в том, что невозможно вводить записи. DropDownListContentControl позволяет только выбирать запись из списка.
Щелкните ячейку справа от ячейки Примечания и введите необходимые примечания.
По необходимости можно добавить нетекстовое содержимое, например изображение или вложенную таблицу. RichTextContentControl позволяет добавлять не только текст, но и другое содержимое.
Убедитесь в том, что можно добавлять/удалять строки и столбцы в таблице. Это возможно благодаря тому, что к таблице не применялся режим защиты с помощью помещения ее в GroupContentControl.
Закройте шаблон.
Следующие действия
Дополнительные сведения об использовании элементов управления содержимым см. в следующем разделе:
- Выполните привязку элементов управления содержимым к внедренным в документ элементам XML, также называемых "пользовательские XML-части". Дополнительные сведения см. в разделе Пошаговое руководство. Привязка элементов управления содержимым к пользовательским XML-частям.
См. также
Задачи
Практическое руководство. Добавление элементов управления содержимым в документы Word
Практическое руководство. Защита частей документов с помощью элементов управления содержимым
Основные понятия
Элементы управления содержимым
Общие сведения о ведущих элементах и элементах управления ведущего приложения
Программные ограничения ведущих элементов и элементов управления ведущего приложения
Добавление элементов управления в документы Office во время выполнения
Вспомогательные методы для элементов управления ведущего приложения