Программные ограничения элементов узла и элементов управления узлами

Каждый ведущий элемент и элемент управления ведущего приложения создается, чтобы работать аналогично собственному объекту Microsoft Office Word или Microsoft Office Excel с дополнительными функциями. Но есть ряд фундаментальных различий между поведением во время выполнения ведущих элементов и элементов управления ведущего приложения с одной стороны и собственных объектов Office с другой стороны.

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

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

Программное создание элементов узла

При программном создании или открытии документа, книги или листа во время выполнения с использованием объектной модели Word или Excel элемент не является ведущим. Вместо этого новый объект является собственным объектом Office. Например, при использовании метода Add для создания документа Word во время выполнения он будет собственным объектом Document , а не ведущим элементом Document . Аналогично, при создании листа с помощью метода Add во время выполнения вы получаете собственный объект Worksheet , а не ведущий элемент Worksheet .

В проектах уровня документа нельзя создавать ведущие элементы во время выполнения. Ведущие элементы можно создавать в проектах уровня документа только во время разработки. Дополнительные сведения см. в разделе "Элемент узла документа", "Узел книги" и "Узел листа".

В проектах надстроек VSTO можно создавать ведущие элементы Document, Workbookи Worksheet во время выполнения. Дополнительные сведения см. в разделе "Расширение документов Word" и книг Excel в надстройках VSTO во время выполнения.

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

Во время выполнения можно программными средствами добавлять элементы управления ведущего приложения в ведущий элемент Document или Worksheet . Дополнительные сведения см. в разделе "Добавление элементов управления в документы Office во время выполнения".

Нельзя добавлять элементы управления ведущего приложения в собственный объект Document или Worksheet.

Примечание.

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

Общие сведения о различиях типов между элементами узла, элементами управления узла и собственными объектами Office

Для каждого ведущего элемента и элемента управления ведущего приложения существует собственный объект Microsoft Office Word или Microsoft Office Excel. Доступ к базовому объекту можно получить с помощью свойства InnerObject элемента узла или элемента управления узла. Однако невозможно привести собственный объект Office к соответствующему ведущему элементу или элементу управления ведущего приложения. При попытке привести собственный объект Office к типу ведущего элемента или элемента управления ведущего приложения возникает исключение InvalidCastException .

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

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

В приложении Word невозможно передать элемент управления ведущего приложения в метод или свойство, для которого требуется собственный объект Word в качестве параметра. Для возврата базового собственного объекта Word необходимо использовать свойство InnerObject элемента управления узла. Например, можно передать объект Bookmark в метод путем передачи в метод свойства InnerObject элемента управления ведущего приложения Bookmark .

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

В приведенном ниже примере создается элемент управления NamedRange , который затем передается в метод AutoFill . Код использует свойство InnerObject именованного диапазона для возврата базового объекта Range Office, требующегося для метода AutoFill .

this.Range["A1"].Value2 = "Monday";
this.Range["A2"].Value2 = "Tuesday";

Microsoft.Office.Tools.Excel.NamedRange dayRange = 
    this.Controls.AddNamedRange(this.Range["A1", "A7"], "dayRange");
this.Range["A1", "A2"].AutoFill(dayRange.InnerObject, Excel.XlAutoFillType.xlFillDays);

Возвращаемые типы собственных методов и свойств Office

Большинство методов и свойств ведущих элементов возвращают собственные объекты Office, на которых основаны ведущие элементы. Например, свойство Parent элемента управления ведущего приложения NamedRange в Excel возвращает объект Worksheet , а не ведущий элемент Worksheet . Аналогично, свойство Parent элемента управления ведущего приложения RichTextContentControl в Word возвращает объект Document , а не ведущий элемент Document .

Доступ к коллекциям элементов управления узлами

Среда выполнения набор средств Visual Studio для Office не предоставляет отдельные коллекции для каждого типа элемента управления узла. Вместо этого используйте свойство Controls ведущего элемента для итерации всех управляемых элементов управления (как элементов управления узла, так и элементов управления Windows Forms) на документе или листе, а затем найдите элементы, соответствующие типу интересующего вас элемента управления узла. В примере кода ниже рассматривается каждый элемент управления в документе Word и определяется, является ли он Bookmark.

foreach (object targetControl in this.Controls)
{
    Microsoft.Office.Tools.Word.Bookmark bookMark =
        targetControl as Microsoft.Office.Tools.Word.Bookmark;

    if (bookMark != null)
    {
        // Do some work with the bookmark here.
    }
}

Дополнительные сведения о свойстве Controls элементов узла см. в статье "Добавление элементов управления в документы Office во время выполнения".

Объектные модели Word и Excel включают свойства, которые предоставляют коллекции собственных элементов управления для документов и листов. С помощью этих свойств нельзя получить доступ к управляемым элементам управления. Например, невозможно перечислить каждый элемент управления ведущего приложения Bookmark в документе с помощью свойства Bookmarks объекта Document или свойства Bookmarks объекта Document. Эти свойства включают в документ только элементы управления Bookmark ; они не включают в документ элементы управления ведущего приложения Bookmark .