Добавление элементов управления в документы Office во время выполнения
Можно добавить элементы управления в документ слова Microsoft Office и рабочей книге Microsoft Office Excel во время выполнения.Можно также удалять во время выполнения.Элементы управления, добавлении или удалении во время выполнения Вызываются динамическими элементами управления.
Применение. Сведения этого раздела применяются к проектам уровня документа и уровня приложения для следующих приложений: Excel 2013 и Excel 2010; Word 2013 и Word 2010. Дополнительные сведения см. в разделе Доступность функций по типам приложений Office и проектов.
В этом разделе описываются следующие действия:
Управление элементами управления во время выполнения с помощью коллекций.
Добавление элементов управления ведущего приложения в документы.
Добавление элементов управления Windows Forms в документы.
Для просмотра связанных демонстрационных видеороликов перейдите по ссылке How Do I: Add Controls to a Document Surface at Runtime? (на английском языке).
Управление элементами управления во время выполнения с помощью коллекций
Для добавления, получения и удаления элементов управления во время выполнения используются вспомогательные методы объектов Microsoft.Office.Tools.Excel.ControlCollection и Microsoft.Office.Tools.Word.ControlCollection.
Способ обращения к этим объектам зависит от типа разрабатываемого проекта.
В проекте уровня документа для Excel используется свойство Worksheet.Controls классов Sheet1, Sheet2 и Sheet3.Дополнительные сведения об этих классах см. в разделе Ведущие элементы листа.
В проекте уровня документа для Word используется свойство Document.Controls класса ThisDocument.Дополнительные сведения об этом классе см. в разделе Ведущий элемент документа.
В проекте уровня приложения для Excel или Word используется свойство Controls классов Microsoft.Office.Tools.Excel.Worksheet или Microsoft.Office.Tools.Word.Document, созданных во время выполнения.Дополнительные сведения о создании этих объектов во время выполнения см. в разделе Расширение документов Word и книг Excel в надстройках уровня приложения во время выполнения.
Добавление элементов управления
Типы Microsoft.Office.Tools.Excel.ControlCollection и Microsoft.Office.Tools.Word.ControlCollection содержащие вспомогательные методы, которые можно использовать для добавления элементов управления ведущего приложения и общие элементы управления Windows Forms в документы и листы.Каждое имя метода имеет формат Addбазовый класс, где базовый класс имя класса элемента управления, который нужно добавить.Например, чтобы добавить в документ элемент управления NamedRange, используйте метод AddNamedRange.
В следующем примере кода показывается добавление NamedRange в Sheet1 в проекте уровня документа для Excel.
Dim range1 As Excel.Range = Globals.Sheet1.Range("A1", "D5")
Dim namedRange1 As Microsoft.Office.Tools.Excel.NamedRange = _
Globals.Sheet1.Controls.AddNamedRange(range1, "ChartSource")
Excel.Range range1 = Globals.Sheet1.Range["A1", "D5"];
Microsoft.Office.Tools.Excel.NamedRange namedRange1 =
Globals.Sheet1.Controls.AddNamedRange(range1, "ChartSource");
Получение доступа к элементам управления и удаление их
С помощью свойства Controls класса Microsoft.Office.Tools.Excel.Worksheet или класса Microsoft.Office.Tools.Word.Document обеспечивается итерация по всем элементам управления в документе, включая добавленные во время разработки.Элементы управления, добавляемые в документ во время разработки, также называются статическими элементами управления.
Удалить динамические элементы управления можно путем вызова метода Delete элемента управления или путем вызова метода Remove каждой коллекции Controls.В следующем примере кода показывается использование метода Remove для удаления элемента управления NamedRange из листа Sheet1 в проекте уровня документа для Excel.
Globals.Sheet1.Controls.Remove("ChartSource")
Globals.Sheet1.Controls.Remove("ChartSource");
Во время выполнения удаление статических элементов управления невозможно.При попытке удаления статического элемента управления с помощью метода Delete или Remove будет возникать исключение CannotRemoveControlException.
Примечание |
---|
Не удаляйте элементы управления программными средствами в обработчике событий Shutdown документа.При возникновении события Shutdown элементы пользовательского интерфейса документа становятся недоступными.Если требуется удалить элементы управления до закрытия документа, следует добавить код в обработчик для другого события, например события Document.BeforeClose или Document.BeforeSave для Word или события Workbook.BeforeClose или Workbook.BeforeSave для Excel. |
Добавление элементов управления ведущего приложения в документы
В случае программного добавления элементов управления ведущего приложения в документ необходимо присваивать каждому из них уникальное имя и указать, где этот элемент управления должен быть добавлен в документе.Дополнительные инструкции см. в следующих разделах:
Практическое руководство. Добавление элементов управления ListObject на листы
Практическое руководство. Добавление элементов управления NamedRange на листы
Практическое руководство. Добавление элементов управления диаграммой на листы
Практическое руководство. Добавление элементов управления содержимым в документы Word
Практическое руководство. Добавление закладок в документы Word
Дополнительные сведения об элементах управления ведущего приложения см. в разделе Общие сведения о ведущих элементах и элементах управления ведущего приложения.
Когда документ сохраняется, а затем закрывается, все динамические созданные элементы управления ведущего приложения отсоединяются от соответствующих событий, и события теряют свои функции привязки данных.Можно добавить в решение код, который будет пересоздавать элементы управления ведущего приложения при повторном открытии документа.Дополнительные сведения см. в разделе Сохранение динамических элементов управления в документах Office.
Примечание |
---|
Следующие элементы управления не могут добавляться в документы программными средствами и, следовательно, не поддерживают вспомогательные методы: XmlMappedRange, XMLNode и XMLNodes. |
Добавление элементов управления Windows Forms в документы
В случае программного добавления элементов управления Windows Forms в документ для каждого элемента необходимо указать расположение и уникальное имя.В Visual Studio Tools for Office (cреда выполнения) представлены вспомогательные методы для каждого элемента управления.Эти методы перегружатьы, чтобы можно было передавать или диапазон или координаты для конкретного расположения элемента управления.
Когда документ сохраняется, а затем закрывается, все динамически созданные элементы управления Windows Forms удаляются из этого документа.Можно добавить в решение код, который будет пересоздавать элементы управления ведущего приложения при повторном открытии документа.При создании элементов управления Windows Forms с помощью надстройки уровня приложения оболочки ActiveX для этих элементов управления располагаются слева в документе.Дополнительные сведения см. в разделе Сохранение динамических элементов управления в документах Office.
Примечание |
---|
Программное добавление элементов управления Windows Forms в защищенные документы не поддерживается.Если для добавления элемента управления защита документа Word или книги Excel снимается программными средствами, необходимо добавить дополнительный код для удаления оболочки ActiveX элемента управления при закрытии документа.Автоматическое удаление оболочки ActiveX элемента управления из защищенных документов не поддерживается. |
Добавление пользовательских элементов управления
Если необходимо добавить System.Windows.Forms.Control, не поддерживается доступными вспомогательными методами, как пользовательский элемент управления, используйте следующие методы:
В Excel следует использовать один из методов AddControl() объекта Microsoft.Office.Tools.Excel.ControlCollection.
В Word следует использовать один из методов AddControl() объекта Microsoft.Office.Tools.Word.ControlCollection.
Чтобы добавить элемент управления, передайте методу AddControl элемент управления System.Windows.Forms.Control, его расположение и уникальное имя.Метод AddControl возвращает объект, который определяет, как элемент управления взаимодействует с листом или документом.Метод AddControl возвращает Microsoft.Office.Tools.Excel.ControlSite (для Excel) или объект Microsoft.Office.Tools.Word.ControlSite (для слова).
В следующем примере кода показано, как использовать метод AddControl(Control, Range, String) для динамического добавления пользовательского элемента управления на лист в проекте уровня документа Excel.В этом примере пользовательский элемент управления называется UserControl1 и Range называется range1. Чтобы использовать этот пример, запустите его из класса Sheetn в проекте.
Dim customControl As New UserControl1()
Dim dynamicControl As Microsoft.Office.Tools.Excel.ControlSite = _
Me.Controls.AddControl(customControl, range1, "dynamic")
UserControl1 customControl = new UserControl1();
Microsoft.Office.Tools.Excel.ControlSite dynamicControl =
this.Controls.AddControl(customControl, range1, "dynamic");
Использование членов пользовательских элементов управления
После добавления элемента управления на лист или в документ с помощью методов AddControl появляется два разных объекта элементов управления:
объект System.Windows.Forms.Control, представляющий пользовательский элемент управления;
Объект ControlSite, OLEObject или OLEControl, представляющий элемент управления после добавления на лист или в документ.
Эти элементы управления совместно используют много свойств и методов.Необходимо обеспечить обращение к таким членам посредством соответствующего элемента управления:
Для обращения к членам, принадлежащим только пользовательскому элементу управления, используйте System.Windows.Forms.Control.
Для обращения к членам, которые являются общими для нескольких элементов управления, используйте объект ControlSite, OLEObject или OLEControl.
При обращении к общим членам элемента управления System.Windows.Forms.Control может возникнуть сбой без предупреждения или уведомления, либо может быть создан недопустимый результат.Если необходимый метод или свойство недоступны, следует всегда использовать методы и свойства ControlSite, OLEObject или OLEControl; только тогда можно будет ссылаться на System.Windows.Forms.Control.
Например оба класса ControlSite и System.Windows.Forms.Control имеют свойство Top.Чтобы получить или установить расстояние между верхом элемента управления и верхом документа, следует использовать свойство Top объекта ControlSite, а не свойство Top объекта System.Windows.Forms.Control.
' Property is set in relation to the document.
dynamicControl.Top = 100
' Property is set in relation to the container control.
customControl.Top = 100
// Property is set in relation to the document.
dynamicControl.Top = 100;
// Property is set in relation to the container control.
customControl.Top = 100;
См. также
Задачи
Практическое руководство. Добавление элементов управления ListObject на листы
Практическое руководство. Добавление элементов управления NamedRange на листы
Практическое руководство. Добавление элементов управления диаграммой на листы
Практическое руководство. Добавление элементов управления содержимым в документы Word
Практическое руководство. Добавление закладок в документы Word
Практическое руководство. Добавление элементов управления Windows Forms в документы Office
Основные понятия
Сохранение динамических элементов управления в документах Office
Общие сведения об использовании элементов управления Windows Forms в документах Office