Aracılığıyla paylaş


Ana Bilgisayar Öğelerinin ve Ana Bilgisayar Denetimlerinin Programsal Sınırlamaları

Her konak öğesi ve konak kontrolü, ek işlevlerle birlikte ilgili yerel Microsoft Office Word veya Microsoft Office Excel nesnesi gibi davranmak için tasarlanmıştır. Fakat, çalışma zamanında konak öğeleri ve konak kontrollerinin davranışıyla yerel Office nesneleri arasında bazı temel farklılılar vardır.

Konak öğeleri ve konak kontrolleri hakkında genel bilgi için, bkz. Konak Öğeleri ve Konak Kontrollerine Genel Bakış.

Uygulama alanı: Bu konudaki bilgiler şu uygulamaların belge düzeyi projelerine ve uygulama düzeyi projelerine yöneliktir: Excel 2007 ve Excel 2010; Word 2007 ve Word 2010. Daha fazla bilgi için bkz. Office Uygulamalarında Kullanılabilir Özellikler ve Proje Türü.

Programlı Olarak Konak Öğeleri Oluşturma

Programlı olarak bir belge, çalışma kitabı veya çalışma sayfasını, çalışma zamanında Word veya Excel nesne modeli kullanarak oluşturduğunuzda veya açtığınızda öğe, konak öğesi değildir. Onun yerine, yeni nesne yerel Office nesnesidir. Örneğin, eğer yeni Word belgesini çalışma zamanında oluşturmak için Documents.Add yöntemini kullanıyorsanız, o Microsoft.Office.Tools.Word.Document konak öğesi yerine yerel Microsoft.Office.Interop.Word.Document nesnesi olur. Benzer şekilde, yeni çalışma sayfasını Worksheets.Add yöntemini kullanarak çalışma zamanında oluşturduysanız, Microsoft.Office.Tools.Excel.Worksheet konak öğesi yerine yerel Microsoft.Office.Interop.Excel.Worksheet nesnesi alırsınız.

Belge düzeyi projesinde, konak öğelerini çalışma zamanında oluşturamazsınız. Belge düzeyi projesinde, konak öğeleri sadece tasarım zamanında oluşturulabilir. Daha fazla bilgi için bkz. Document (Belge) Konak Öğesi, Workbook (Çalışma Kitabı) Konak Öğesi ve Çalışma Sayfası Konak Öğesi.

Uygulama düzeyi projesinde, çalışma zamanında Microsoft.Office.Tools.Word.Document, Microsoft.Office.Tools.Excel.Workbook veya Microsoft.Office.Tools.Excel.Worksheet konak öğelerini yaratabilirsiniz. Daha fazla bilgi için bkz. Word Belgelerini ve Excel Çalışma Kitaplarını Çalıştırma Zamanında Uygulama Düzeyi Eklentileri İçinde Genişletme.

Programlı Olarak Konak Kontrolleri Oluşturma

Konak kontrollerini, Microsoft.Office.Tools.Word.Document veya Microsoft.Office.Tools.Excel.Worksheet konak öğesine programlı olarak çalışma zamanında ekleyebilirsiniz. Daha fazla bilgi için bkz. Belgeye Çalışma Zamanında Denetim Ekleme.

Yerel Microsoft.Office.Interop.Word.Document veya Microsoft.Office.Interop.Excel.Worksheet'e konak kontrolleri ekleyemezsiniz.

Not

Aşağıdaki konak kontrolleri programlı olarak çalışma sayfalarına veya belgelere eklenemez: XmlMappedRange, XMLNode ve XMLNodes.

Konak Öğeleri, Konak Kontrolleri ve Yerel Office Nesneleri Arasındaki Tür Farklılıklarını Anlama

Her konak öğesi ve konak kontrolü için, arka planda yerel Microsoft Office Word veya Microsoft Office Excel nesnesi vardır. Arka plandaki nesneye konak öğesinin veya konak kontrolünün InnerObject özelliğini kullanarak erişebilirsiniz. Fakat, yerel Office nesnesini ilgili konak öğesine veya konak kontrolüne dönüştürmenin bir yolu yoktur. Eğer yerel Office nesnesini konak öğesi veya konak kontrolünün türüne dönüştürmeyi denerseniz, InvalidCastException oluşturulur.

Konak öğeleri ve konak kontrolleri türleri arasındaki farkın ve arka plandaki yerel Office nesnelerinin kodunuzu etkileyebileceği senaryolar vardır.

Yöntemlere ve Özelliklere Konak Kontrolleri Geçirme

Word'de konak kontrolünü, parametre olarak yerel World nesnesine gerek duyan özellik veya yönteme geçiremezsiniz. Arka plandaki yerel Word nesnesini döndürmek için konak kontrolünün InnerObject özelliğini kullanmalısınız. Örneğin, Microsoft.Office.Tools.Word.Bookmark konak kontrolünün InnerObject özelliğini yönteme geçirerek, Microsoft.Office.Interop.Word.Bookmark nesnesini de yönteme geçirebilirsiniz.

Excel'de konak kontrolünü yönteme veya özelliğe geçirmek için konak kontrolünün InnerObject özelliğini kullanmanız gereken iki durum vardır:

  • Yöntem veya özellik, arka plandaki Excel nesnesini beklediğinde.

  • .NET Framework 3.5'i hedefleyen projede Microsoft.Office.Tools.Excel.ExcelLocale1033Attribute, false'a ayarlandığında ve yöntem veya özellik, arka plandaki Excel nesnesi yerine Object beklediğinde. Microsoft.Office.Tools.Excel.ExcelLocale1033Attribute hakkında daha fazla bilgi için, bkz. Excel'de Çeşitli Bölgesel Ayarlarla Veri Biçimlendirme.

Aşağıdaki örnekte, Microsoft.Office.Tools.Excel.NamedRange denetimi oluşturulur ve AutoFill yöntemine geçirilir. Kod, AutoFill yöntemi tarafından gerekli olan arka plandaki Office Microsoft.Office.Interop.Excel.Range'i döndürmek için, isimlendirilmiş aralığın InnerObject özelliğini kullanır.

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

Yerel Office Yöntemleri ve Özelliklerinin Dönüş Türleri

Konak öğelerinin birçok yöntem ve özellikleri, arka plandaki yerel Office nesnesini konak öğesi neye bağlıysa oraya döndürür. Örneğin, Excel'de NamedRange konak kontrolünün Parent özelliği, Microsoft.Office.Tools.Excel.Worksheet konak öğesi yerine Microsoft.Office.Interop.Excel.Worksheet nesnesi döndürür. Benzer olarak, Word'de RichTextContentControl konak kontrolünün Parent özelliği, Microsoft.Office.Tools.Word.Document konak öğesi yerine Microsoft.Office.Interop.Word.Document nesnesi döndürür.

Konak Kontrollerinin Koleksiyonlarına Erişme

Visual Studio Tools for Office çalışma zamanı modülü,konak kontrolünün her türü için tek koleksiyon sağlamaz. Onun yerine, belge veya çalışma sayfası üzerindeki yönetilen kodların tümünde (konak kontrolleri ve Windows Forms denetimlerinin her ikisi de) ilerleme yapmak için konak öğesinin Controls özelliğini kullanın ve ilgilendiğiniz konak kontrolü türüyle eşleşen öğelere bakın. Aşağıdaki kod örneğinde, Word belgesindeki her denetim incelenir ve denetimin Microsoft.Office.Tools.Word.Bookmark olup olmadığı belirlenir.

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

Konak öğelerinin Controls özelliği hakkında daha fazla bilgi için bkz. Belgeye Çalışma Zamanında Denetim Ekleme.

Word ve Excel nesne modelleri, belge ve çalışma sayfalarındaki yerel denetimlerin koleksiyonunu oluşturan özellikleri içerir. Yönetilen kodlara bu özellikleri kullanarak erişemezsiniz. Örneğin, Microsoft.Office.Interop.Word.Document'ın Bookmarks özelliğini veya Microsoft.Office.Tools.Word.Document'ın Bookmarks özelliğini kullanarak, belgedeki her Microsoft.Office.Tools.Word.Bookmark konak kontrolünü numaralandırmak imkansızdır. Bu özellikler yalnızca dahil Microsoft.Office.Interop.Word.Bookmark belgedeki; kontrol eder içerdikleri değil Microsoft.Office.Tools.Word.Bookmark ana denetimlerde belge.

.NET Framework 3.5'i Hedefleyen Projelerdeki Yeni Excel 2010 ve Word 2010 Üyelerine Erişme

.NET Framework 3.5'i hedefleyen Excel 2010 ve Word 2010 projelerinde, Office 2010 da tanıtılan üyeler konak öğelerinde ve konak kontrollerinde kullanılamaz. Bu projelerde, konak öğeleri ve konak kontrolleri sadece 2007 Microsoft Office sisteminde kullanılabilir olan üyelere sahiptir. Excel 2010 veya Word 2010'a eklenmiş bir üyeye erişmek amacıyla, arka plandaki yerel Office objesini döndürmek için konak kontrolünün InnerObject özelliğini kullanın ve o nesnedeki üyeye erişin.

Örneğin, Word 2010'da Microsoft.Office.Interop.Word.ContentControl nesneleri onay kutusu içerik denetiminin seçilip seçilmediğini belirlemek için kullanılan Checked özelliğine sahiptir (bu özellik Word 2007'de yoktur çünkü Word 2007 onay kutusu içerik denetimlerine sahip değildir). .NET Framework 3.5'i hedefleyen Word 2010 projelerinde, Microsoft.Office.Tools.Word.ContentControl konak denetimleri Checked özelliğine sahip değildir. Aşağıdaki kod örneği arka plandaki Microsoft.Office.Interop.Word.ContentControl nesnesinin Checked özelliğin erişmek için InnerObject özelliğinin nasıl kullanılacağını gösterir.

Me.Paragraphs(1).Range.InsertParagraphBefore()
Me.Paragraphs(1).Range.Select()
Dim checkBoxControl1 As Microsoft.Office.Tools.Word.ContentControl =
    Me.Controls.AddContentControl("checkBoxControl1", Word.WdContentControlType.wdContentControlCheckBox)

' The following line of code compiles in projects that target the .NET Framework 4, but it does not compile 
' in projects that target the .NET Framework 3.5.
checkBoxControl1.Checked = True

' In projects that target the .NET Framework 3.5, use the following code.
checkBoxControl1.InnerObject.Checked = True
this.Paragraphs[1].Range.InsertParagraphBefore();
this.Paragraphs[1].Range.Select();
Microsoft.Office.Tools.Word.ContentControl checkBoxControl1 = 
    this.Controls.AddContentControl("checkBoxControl1", Word.WdContentControlType.wdContentControlCheckBox);

// The following line of code compiles in projects that target the .NET Framework 4, but it does not compile 
// in projects that target the .NET Framework 3.5.
checkBoxControl1.Checked = true;

// In projects that target the .NET Framework 3.5, use the following code.
checkBoxControl1.InnerObject.Checked = true;

Ayrıca bkz.

Başvuru

Worksheet.Controls

Document.Controls

Kavramlar

Konak Öğeleri ve Konak Kontrollerine Genel Bakış

Genişletilmiş Nesneleri Kullanarak Word'ü Otomatikleştirme

Genişletilmiş Nesneleri Kullanarak Excel'i Otomatikleştirme

Çalışma Sayfası Konak Öğesi

Workbook (Çalışma Kitabı) Konak Öğesi

Document (Belge) Konak Öğesi