Sdílet prostřednictvím


Programová omezení hostitelských položek a hostitelských ovládacích prvků

Každá položka hostitele a ovládací prvek hostitele jsou navržené tak, aby se chovaly jako odpovídající nativní systém Microsoft Office objektu Wordu nebo systém Microsoft Office Excelu s dalšími funkcemi. Mezi chováním hostitelských položek a ovládacími prvky hostitele a nativními objekty Office v době běhu však existují některé základní rozdíly.

Obecné informace o hostitelských položkách a ovládacích prvcích hostitelů najdete v tématu Přehled položek hostitele a hostitelských ovládacích prvků.

Platí pro: Informace v tomto tématu platí pro projekty na úrovni dokumentu a projekty doplňků VSTO pro Excel a Word. Další informace naleznete v tématu Funkce dostupné aplikace Office lication a typu projektu.

Vytváření položek hostitele prostřednictvím kódu programu

Při programovém vytvoření nebo otevření dokumentu, sešitu nebo listu za běhu pomocí objektového modelu Aplikace Word nebo Excel není položka hostitelem. Místo toho je nový objekt nativním objektem Office. Pokud například použijete metodu Add k vytvoření nového wordového dokumentu za běhu, bude to nativní Document objekt místo Document položky hostitele. Podobně když vytvoříte nový list za běhu pomocí Add metody, získáte nativní Worksheet objekt místo Worksheet položky hostitele.

V projektech na úrovni dokumentu nelze vytvářet hostitelské položky za běhu. Položky hostitele lze vytvářet pouze v době návrhu v projektech na úrovni dokumentu. Další informace naleznete v tématu Položku hostitele dokumentu, Položku hostitele sešitu a Položku hostitele Listu.

V projektech doplňků VSTO můžete vytvářet Documentpoložky , Workbooknebo Worksheet hostovat položky za běhu. Další informace naleznete v tématu Rozšíření wordových dokumentů a excelových sešitů v doplňkech VSTO za běhu.

Programové vytváření hostitelských ovládacích prvků

Ovládací prvky Document hostitele můžete do položky hostitele nebo Worksheet položky hostitele přidávat programově za běhu. Další informace naleznete v tématu Přidání ovládacích prvků do dokumentů Office za běhu.

Nelze přidat hostitelské ovládací prvky do nativního Document nebo Worksheet.

Poznámka:

Následující hostitelské ovládací prvky nelze do listů nebo dokumentů přidat programově: XmlMappedRange, XMLNodea XMLNodes.

Vysvětlení rozdílů typů mezi hostitelskými položkami, hostitelskými ovládacími prvky a nativními objekty Office

Pro každou položku hostitele a ovládací prvek hostitele existuje základní nativní systém Microsoft Office Objekt aplikace Word nebo systém Microsoft Office aplikace Excel. K podkladovému objektu můžete přistupovat pomocí vlastnosti InnerObject položky hostitele nebo ovládacího prvku hostitele. Neexistuje však způsob, jak přetypovat nativní objekt Office na odpovídající položku hostitele nebo ovládací prvek hostitele. Pokud se pokusíte přetypovat nativní objekt Office na typ položky hostitele nebo ovládacího prvku hostitele, InvalidCastException vyvolá se chyba.

Existuje několik scénářů, kdy rozdíly mezi typy hostitelských položek a ovládacími prvky hostitele a podkladovými nativními objekty Office můžou ovlivnit váš kód.

Předání hostitelských ovládacích prvků metodám a vlastnostem

Ve Wordu nelze předat ovládací prvek hostitele metodě nebo vlastnosti, která vyžaduje nativní objekt aplikace Word jako parametr. Chcete-li vrátit základní nativní objekt Aplikace Word, je nutné použít InnerObject vlastnost hostitelského ovládacího prvku. Například můžete předat Bookmark objekt metodě předáním InnerObject vlastnosti hostitelského Bookmark ovládacího prvku metodě.

V Aplikaci Excel je nutné použít InnerObject vlastnost hostitelského ovládacího prvku k předání hostitelského ovládacího prvku metodě nebo vlastnosti, pokud metoda nebo vlastnost očekává základní objekt aplikace Excel.

Následující příklad vytvoří NamedRange ovládací prvek a předá ho metodě AutoFill . Kód používá InnerObject vlastnost pojmenované oblasti k vrácení podkladového Office Range , který je vyžadován metodou 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);

Návratové typy nativních metod a vlastností Sady Office

Většina metod a vlastností položek hostitele vrací základní nativní objekt Office, na kterém je položka hostitele založena. Parent Například vlastnost hostitelského NamedRange ovládacího prvku v Aplikaci Excel vrátí Worksheet objekt místo Worksheet položky hostitele. Parent Podobně vlastnost hostitelského RichTextContentControl ovládacího prvku ve Wordu vrátí Document objekt místo Document položky hostitele.

Přístup k kolekcem hostitelských ovládacích prvků

Visual Studio Tools for Office runtime neposkytuje jednotlivé kolekce pro každý typ ovládacího prvku hostitele. Místo toho použijte vlastnost Controls položky hostitele k iteraci všemi spravovanými ovládacími prvky (ovládacími prvky hostitele i ovládacími prvky model Windows Forms) v dokumentu nebo listu a vyhledejte položky, které odpovídají typu ovládacího prvku hostitele, který vás zajímá. Následující příklad kódu zkoumá každý ovládací prvek v dokumentu aplikace Word a určuje, zda je ovládací prvek .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.
    }
}

Další informace o vlastnosti Ovládací prvky položek hostitele naleznete v tématu Přidání ovládacích prvků do dokumentů Office za běhu.

Objektové modely Wordu a Excelu obsahují vlastnosti, které zpřístupňují kolekce nativních ovládacích prvků na dokumentech a listech. Pomocí těchto vlastností nelze získat přístup ke spravovaným ovládacím prvkům. Například není možné vytvořit výčet každého Bookmark ovládacího prvku hostitele v dokumentu pomocí Bookmarks vlastnosti Document nebo Bookmarks vlastnosti objektu Document. Tyto vlastnosti zahrnují pouze Bookmark ovládací prvky v dokumentu; neobsahují Bookmark ovládací prvky hostitele v dokumentu.