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


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

Обновлен: Июль 2008

Применение

Сведения, приведенные в данном разделе, относятся только к указанным проектам Visual Studio Tools for Office и версиям Microsoft Office.

Проекты уровня документа

  • Excel 2003

  • Excel 2007

  • Word 2003

  • Word 2007

Проекты уровня приложения

  • Excel 2007

  • Word 2007

Дополнительные сведения см. в разделе Доступность функций по типам приложений и проектов.

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

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

Ведущие элементы, созданные программными средствами

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

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

Начиная с пакета обновления 1 (SP1) для Visual Studio 2008, можно во время выполнения создавать ведущие элементы Microsoft.Office.Tools.Word.Document, Microsoft.Office.Tools.Excel.Workbook или Microsoft.Office.Tools.Excel.Worksheet в надстройках уровня приложения для Excel 2007 м Word 2007. Дополнительные сведения см. в разделе Расширение документов Word и книг Excel в надстройках уровня приложения во время выполнения.

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

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

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

ms178779.alert_note(ru-ru,VS.90).gifПримечание.

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

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

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

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

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

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

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

  • если для метода или свойства требуется основной объект Excel;

  • если для атрибута ExcelLocale1033Attribute задано значение false, а для метода или свойства требуется Object вместо основного объекта Excel.

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

Me.Range("A1").Value2 = "Monday"
Me.Range("A2").Value2 = "Tuesday"

Dim dayRange As Microsoft.Office.Tools.Excel.NamedRange = _
    Me.Controls.AddNamedRange(Me.Range("A1", "A7"), "dayRange")

Me.Range("A1", "A2").AutoFill(dayRange.InnerObject, Excel.XlAutoFillType.xlFillDays)
this.Range["A1", missing].Value2 = "Monday";
this.Range["A2", missing].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 возвращает объект Microsoft.Office.Interop.Excel.Worksheet, а не ведущий элемент Microsoft.Office.Tools.Excel.Worksheet. Аналогично, свойство Parent элемента управления ведущего приложения RichTextContentControl в Word возвращает объект Microsoft.Office.Interop.Word.Document, а не ведущий элемент Microsoft.Office.Tools.Word.Document.

Доступ к коллекциям элементов управления ведущего приложения

Visual Studio Tools for Office не предоставляет отдельных коллекций для каждого типа элементов управления ведущего приложения. Например, с помощью коллекции Microsoft.Office.Interop.Word.Bookmarks невозможно перечислить все элементы управления Microsoft.Office.Tools.Word.Bookmark в документе. Коллекция Microsoft.Office.Interop.Word.Bookmarks включает все закладки в документе, не делая различий между элементом управления Microsoft.Office.Tools.Word.Bookmark и Microsoft.Office.Interop.Word.Bookmark.

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

Dim targetControl As Object
For Each targetControl In Me.Controls

    If TypeOf (targetControl) Is Microsoft.Office.Tools.Word.Bookmark Then
        Dim bookMark As Microsoft.Office.Tools.Word.Bookmark = _
            CType(targetControl, Microsoft.Office.Tools.Word.Bookmark)

        ' Do some work with the book mark here.
    End If
Next
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 book mark here.
    }
}

См. также

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

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

Ведущие элементы листа

Ведущий элемент книги

Ведущий элемент документа

Ссылки

Worksheet.Controls

Document.Controls

Другие ресурсы

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

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

Журнал изменений

Дата

Журнал

Причина

Июль 2008

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

Изменение функции SP1.