Пошаговое руководство. Добавление элементов управления в документ во время выполнения в надстройке VSTO
Элементы управления можно добавить в любой открытый документ Microsoft Office Word с помощью надстройки VSTO. В этом пошаговом руководстве показано, как использовать ленту, чтобы пользователи могли добавлять или RichTextContentControl добавлять Button документ в документ.
Применимость. Информация в этой статье относится к проектам надстроек VSTO для Word 2010. Дополнительные сведения см. в разделе Доступность функций по типам приложений Office и проектов.
В этом пошаговом руководстве рассматриваются следующие задачи:
Создание нового проекта надстройки VSTO для Word.
Предоставление пользовательского интерфейса для добавления элементов управления в документ.
Добавление элементов управления в документ во время выполнения.
Удаление элементов управления из документа.
Примечание.
Отображаемые на компьютере имена или расположения некоторых элементов пользовательского интерфейса Visual Studio могут отличаться от указанных в следующих инструкциях. Это зависит от имеющегося выпуска Visual Studio и используемых параметров. Дополнительные сведения см. в разделе Персонализация среды IDE.
Необходимые компоненты
Для выполнения этого пошагового руководства требуются следующие компоненты:
Выпуск Visual Studio, включающий инструменты разработчика Microsoft Office. Дополнительные сведения см. в статье "Настройка компьютера для разработки решений Office".
Word 2013 или Word 2010.
Создание проекта надстройки Word
Начнем с создания проекта надстройки VSTO для Word
Создание нового проекта надстройки VSTO для Word
Создайте проект надстройки VSTO для Word с именем WordDynamicControls. Дополнительные сведения см. в статье "Практическое руководство. Создание проектов Office в Visual Studio".
Добавьте ссылку на сборку Microsoft.Office.Tools.Word.v4.0.Utilities.dll . Эта ссылка потребуется для программного добавления элемента управления Windows Forms в документ далее в этом пошаговом руководстве.
Предоставление пользовательского интерфейса для добавления элементов управления в документ
Добавьте настраиваемую вкладку на ленту Word. Пользователи могут устанавливать флажки на вкладке, чтобы добавлять элементы управления в документ.
Предоставление пользовательского интерфейса для добавления элементов управления в документ
В меню Проект выберите Добавить новый элемент.
В диалоговом окне Добавление нового элемента выберите элемент Лента (визуальный конструктор).
Измените имя новой ленты на MyRibbonи нажмите кнопку Добавить.
В конструкторе лент откроется файл MyRibbon.cs или MyRibbon.vb ; отобразятся вкладка и группа, используемые по умолчанию.
В конструкторе ленты щелкните группу group1 .
В окне Свойства измените свойство Метка для group1 на Добавить элементы управления.
Перетащите элемент управления CheckBox с вкладки Элементы управления ленты Officeпанели элементов в группу group1.
Щелкните CheckBox1 , чтобы выбрать его.
В окне Свойства измените следующие свойства.
Свойство Значение Имя addButtonCheckBox Подпись Кнопка “Добавить” Добавьте второй флажок в group1, а затем измените следующие свойства.
Свойство Значение Имя addRichTextCheckBox Подпись Добавление элемента управления форматированием текста В конструкторе лент дважды щелкните элемент Добавить кнопку.
Обработчик событий Click флажка Добавить кнопку откроется в редакторе кода.
Вернитесь в конструктор ленты и дважды щелкните элемент Добавить элемент управления форматированием текста.
Обработчик событий Click флажка Добавить элемент управления форматированием текста откроется в редакторе кода.
Далее в этом пошаговом руководстве вы добавите код в эти обработчики событий для добавления и удаления элементов управления в активном документе.
Добавление и удаление элементов управления в активном документе
В коде надстройки VSTO необходимо преобразовать активный документ в DocumentT:Microsoft.Office.Tools.Word.Document , прежде чем можно будет добавить элемент управления. В решениях Office управляемые элементы управления можно добавлять только в ведущие элементы, которые действуют как контейнеры для элементов управления. В проектах надстроек VSTO элементы узла можно создавать во время выполнения с помощью GetVstoObject
метода.
Добавьте в класс ThisAddIn
методы, которые могут вызываться для добавления или удаления Button или RichTextContentControl в активном документе. Далее в этом пошаговом руководстве вы будете вызывать эти методы из обработчиков событий Click флажков на ленте.
Добавление и удаление элементов управления в активном документе
В Обозреватель решений дважды щелкните ThisAddIn.cs или ThisAddIn.vb, чтобы открыть файл в редакторе кода.
Добавьте в класс
ThisAddIn
приведенный далее код. Этот код объявляет объекты Button и RichTextContentControl , представляющие элементы управления, которые будут добавлены в документ.Добавьте приведенный ниже метод в класс
ThisAddIn
. Когда пользователь щелкает флажок Добавить кнопку на ленте, этот метод добавляет Button в выделенный фрагмент документа, если флажок устанавливается, или удаляет Button , если флажок снимается.internal void ToggleButtonOnDocument() { Document vstoDocument = Globals.Factory.GetVstoObject(this.Application.ActiveDocument); string name = "MyButton"; if (Globals.Ribbons.MyRibbon.addButtonCheckBox.Checked) { Word.Selection selection = this.Application.Selection; if (selection != null && selection.Range != null) { button = vstoDocument.Controls.AddButton( selection.Range, 100, 30, name); } } else { vstoDocument.Controls.Remove(name); } }
Добавьте приведенный ниже метод в класс
ThisAddIn
. Когда пользователь щелкает флажок Добавить элемент управления форматированием текста на ленте, этот метод добавляет RichTextContentControl в выделенный фрагмент документа, если флажок устанавливается, или удаляет RichTextContentControl , если флажок снимается.internal void ToggleRichTextControlOnDocument() { Document vstoDocument = Globals.Factory.GetVstoObject(this.Application.ActiveDocument); string name = "MyRichTextBoxControl"; if (Globals.Ribbons.MyRibbon.addRichTextCheckBox.Checked) { Word.Selection selection = this.Application.Selection; if (selection != null && selection.Range != null) { richTextControl = vstoDocument.Controls.AddRichTextContentControl( selection.Range, name); } } else { vstoDocument.Controls.Remove(name); } }
Удаление элемента управления Button при сохранении документа
Элементы управления Windows Forms не сохраняются, когда документ сохраняется, а затем закрывается. Однако оболочка ActiveX для каждого элемента управления остается в документе, и границу этой оболочки конечные пользователи могут видеть при повторном открытии документа. Существует несколько способов очистки динамически созданных элементов управления Windows Forms в надстройках VSTO. В этом пошаговом руководстве вы программно удалите Button элемент управления при сохранении документа.
Удаление элемента управления "Кнопка" при сохранении документа
В файле кода ThisAddIn.cs или ThisAddIn.vb добавьте следующий метод в
ThisAddIn
класс. Этот метод является обработчиком событий для события DocumentBeforeSave . Если у сохраненного документа есть связанный с ним ведущий элемент Document , обработчик событий получает этот ведущий элемент и удаляет элемент управления Button , если он существует.private void Application_DocumentBeforeSave(Word.Document Doc, ref bool SaveAsUI, ref bool Cancel) { bool isExtended = Globals.Factory.HasVstoObject(Doc); if (isExtended) { Microsoft.Office.Tools.Word.Document vstoDocument = Globals.Factory.GetVstoObject(Doc); if (vstoDocument.Controls.Contains(button)) { vstoDocument.Controls.Remove(button); Globals.Ribbons.MyRibbon.addButtonCheckBox.Checked = false; } } }
В C# добавьте в обработчик событий
ThisAddIn_Startup
следующий код. Этот код требуется в C# для подключения обработчика событийApplication_DocumentBeforeSave
к событию DocumentBeforeSave .this.Application.DocumentBeforeSave += new Word.ApplicationEvents4_DocumentBeforeSaveEventHandler( Application_DocumentBeforeSave);
Добавление и удаление элементов управления, когда пользователь щелкает поля проверка на ленте
Наконец, измените Click обработчики событий полей проверка, добавленных на ленту, чтобы добавить или удалить элементы управления в документе.
Добавление или удаление элементов управления, когда пользователь щелкает поля проверка на ленте
В файле кода MyRibbon.cs или MyRibbon.vb замените созданные
addButtonCheckBox_Click
иaddRichTextCheckBox_Click
обработчики событий следующим кодом. Этот код переопределяет данные обработчики событий, задавая вызов методовToggleButtonOnDocument
иToggleRichTextControlOnDocument
, которые вы добавили в классThisAddIn
ранее в этом пошаговом руководстве.
Тестирование решения
Добавьте элементы управления в документ, выбрав их в настраиваемой вкладке на ленте. При сохранении документа элемент управления Button удаляется.
Тестирование решения
Нажмите клавишу F5 для запуска проекта.
В активном документе нажмите клавишу ВВОД несколько раз, чтобы добавить в документ новые пустые абзацы.
Выделите первый абзац.
Перейдите на вкладку Надстройки .
В группе Добавить элементы управления щелкните Добавить кнопку.
В первом абзаце появляется кнопка.
Выделите последний абзац.
В группе Добавить элементы управления щелкните Добавить элемент управления форматированием текста.
В последний абзац добавляется элемент управления форматированием текста.
Сохраните документ.
Кнопка удаляется из документа.
Следующие шаги
Дополнительные сведения об элементах управления в надстройках VSTO см. в следующих статьях.
Пример, демонстрирующий добавление в документ других типов элементов управления во время выполнения и повторное создание элементов управления при повторном открытии документа, см . в примерах разработки и пошаговых руководствах по разработке Word.
Пошаговое руководство по добавлению элементов управления на лист с помощью надстройки VSTO для Excel см . в пошаговом руководстве. Добавление элементов управления на лист во время выполнения в проекте надстройки VSTO.
Связанный контент
- Решения Word
- Добавление элементов управления в документы Office во время выполнения
- Сохранение динамических элементов управления в документах Office
- Практическое руководство. Добавление элементов управления Windows Forms в документы Office
- Практическое руководство. Добавление элементов управления содержимым в документы Word
- Расширение документов Word и книг Excel в надстройках VSTO во время выполнения