Konak öğelerinin ve konak denetimlerinin programlı sınırlamaları

Her konak öğesi ve konak denetimi, ek işlevlerle karşılık gelen bir yerel Microsoft Office Word veya Microsoft Office Excel nesnesi gibi davranacak şekilde tasarlanmıştır. Ancak, konak öğelerinin davranışıyla konak denetimleri ve çalışma zamanındaki yerel Office nesneleri arasında bazı temel farklılıklar vardır.

Konak öğeleri ve konak denetimleri hakkında genel bilgi için bkz . Konak öğelerine ve konak denetimlerine genel bakış.

Şunlar için geçerlidir: Bu konudaki bilgiler, Excel ve Word için belge düzeyi projeler ve VSTO Eklenti projeleri için geçerlidir. Daha fazla bilgi için bkz. Office uygulaması ve proje türüne göre kullanılabilen özellikler.

Program aracılığıyla konak öğeleri oluşturma

Word veya Excel nesne modelini kullanarak çalışma zamanında program aracılığıyla bir belge, çalışma kitabı veya çalışma sayfası oluşturduğunuzda veya açtığınızda, öğe bir konak öğesi değildir. Bunun yerine, yeni nesne yerel bir Office nesnesidir. Örneğin, çalışma zamanında yeni bir Word belgesi oluşturmak için yöntemini kullanırsanız Add , konak öğesi yerine yerel Document bir Document nesne olur. Benzer şekilde, yöntemini kullanarak Add çalışma zamanında yeni bir çalışma sayfası oluşturduğunuzda, konak öğesi yerine yerel Worksheet bir Worksheet nesne alırsınız.

Belge düzeyi projelerinde, çalışma zamanında konak öğeleri oluşturamazsınız. Konak öğeleri yalnızca belge düzeyi projelerde tasarım zamanında oluşturulabilir. Daha fazla bilgi için bkz . Belge konak öğesi, Çalışma kitabı konak öğesi ve Çalışma sayfası konak öğesi.

VSTO Eklenti projelerinde, çalışma zamanında , Workbookveya Worksheet konak öğeleri oluşturabilirsinizDocument. Daha fazla bilgi için bkz . Çalışma zamanında VSTO Eklentilerinde Word belgelerini ve Excel çalışma kitaplarını genişletme.

Program aracılığıyla konak denetimleri oluşturma

Çalışma zamanında bir Document veya Worksheet konak öğesine program aracılığıyla konak denetimleri ekleyebilirsiniz. Daha fazla bilgi için bkz . Çalışma zamanında Office belgelerine denetim ekleme.

Yerel Document veya Worksheetöğesine konak denetimleri ekleyemezsiniz.

Not

Aşağıdaki konak denetimleri, çalışma sayfalarına veya belgelere program aracılığıyla eklenemez: XmlMappedRange, XMLNodeve XMLNodes.

Konak öğeleri, konak denetimleri ve yerel Office nesneleri arasındaki tür farklarını anlama

Her konak öğesi ve konak denetimi için, temel alınan bir yerel Microsoft Office Word veya Microsoft Office Excel nesnesi vardır. Konak öğesinin veya konak denetiminin InnerObject özelliğini kullanarak temel alınan nesneye erişebilirsiniz. Ancak, yerel bir Office nesnesini ilgili konak öğesine veya konak denetimine atamanın hiçbir yolu yoktur. Yerel bir Office nesnesini konak öğesi veya konak denetimi türüne dönüştürmeye çalışırsanız, bir InvalidCastException oluşturulur.

Konak öğeleri ve konak denetimleri ile temel alınan yerel Office nesneleri arasındaki farkların kodunuzu etkileyebileceği çeşitli senaryolar vardır.

Konak denetimlerini yöntemlere ve özelliklere geçirme

Word'de, ana bilgisayar denetimini parametre olarak yerel bir Word nesnesi gerektiren bir yönteme veya özelliğe geçiremezsiniz. Temel alınan yerel Word nesnesini döndürmek için konak denetiminin InnerObject özelliğini kullanmanız gerekir. Örneğin, konak denetiminin özelliğini Bookmark yöntemine InnerObject geçirerek bir nesneyi yönteme geçirebilirsinizBookmark.

Excel'de, yöntem veya özellik temel alınan Excel nesnesini beklediğinde konak denetimini bir yönteme veya özelliğe geçirmek için konak denetiminin InnerObject özelliğini kullanmanız gerekir.

Aşağıdaki örnek bir NamedRange denetim oluşturur ve bunu yöntemine AutoFill geçirir. Kod, yönteminin InnerObject gerektirdiği temel Office'i Range döndürmek için adlandırılmış aralığın AutoFill özelliğini kullanır.

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);

Yerel Office yöntemlerinin ve özelliklerinin türlerini döndürme

Konak öğelerinin çoğu yöntemi ve özelliği, konak öğesinin temel aldığı temel yerel Office nesnesini döndürür. Örneğin, Excel'deki Parent bir NamedRange konak denetiminin özelliği, konak öğesi yerine bir Worksheet nesne döndürürWorksheet. Benzer şekilde, Word'deki bir RichTextContentControl konak denetiminin özelliği, Parent konak öğesi yerine bir Document nesne döndürürDocument.

Konak denetimlerinden oluşan koleksiyonlara erişme

Office çalışma zamanı için Visual Studio Araçları, her konak denetimi türü için ayrı koleksiyonlar sağlamaz. Bunun yerine, belge veya çalışma sayfasındaki tüm yönetilen denetimlerde (konak denetimleri ve Windows Forms denetimleri) yinelemek için bir konak öğesinin Controls özelliğini kullanın ve ardından ilgilendiğiniz konak denetiminin türüyle eşleşen öğeleri arayın. Aşağıdaki kod örneği, word belgelerindeki her denetimi inceler ve denetimin bir Bookmarkolup olmadığını belirler.

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.
    }
}

Konak öğelerinin Controls özelliği hakkında daha fazla bilgi için bkz . Çalışma zamanında Office belgelerine denetim ekleme.

Word ve Excel nesne modelleri, belgelerde ve çalışma sayfalarında yerel denetim koleksiyonlarını kullanıma sunan özellikler içerir. Bu özellikleri kullanarak yönetilen denetimlere erişemezsiniz. Örneğin, bir veya özelliğinin özelliğini BookmarksDocument kullanarak Bookmarks bir belgedeki her Bookmark konak denetimini numaralandırmak Documentmümkün değildir. Bu özellikler yalnızca belgedeki Bookmark denetimleri içerir; belgedeki Bookmark konak denetimlerini içermez.