Çalışma zamanında Office belgelerine denetim ekleme

Çalışma zamanında bir Microsoft Office Word belgesine ve Microsoft Office Excel çalışma kitabına denetimler ekleyebilirsiniz. Bunları çalışma zamanında da kaldırabilirsiniz. Çalışma zamanında eklediğiniz veya kaldırdığınız denetimlere dinamik denetimler adı verilir.

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

Bu konuda aşağıdakiler açıklanmaktadır:

Denetim koleksiyonlarını kullanarak çalışma zamanında denetimleri yönetme

Çalışma zamanında denetim eklemek, almak veya kaldırmak için ve ControlCollection nesnelerinin ControlCollection yardımcı yöntemlerini kullanın.

Bu nesnelere erişme şekliniz, geliştirmekte olduğunuz projenin türüne bağlıdır:

  • Excel için belge düzeyindeki bir projede Controls , Sheet2ve Sheet3 sınıflarının Sheet1özelliğini kullanın. Bu sınıflar hakkında daha fazla bilgi için bkz . Çalışma sayfası konak öğesi.

  • Word için belge düzeyindeki bir projede Controls sınıfının özelliğini ThisDocument kullanın. Bu sınıf hakkında daha fazla bilgi için bkz . Belge konak öğesi.

  • Excel veya Word için bir VSTO Eklenti projesinde, çalışma zamanında oluşturduğunuz veya WorksheetDocument özelliğini kullanınControls. Bu nesneleri çalışma zamanında oluşturma hakkında daha fazla bilgi için bkz . Çalışma zamanında VSTO Eklentilerinde Word belgelerini ve Excel çalışma kitaplarını genişletme.

Denetim ekleme

ControlCollection ve ControlCollection türleri, belgelere ve çalışma sayfalarına konak denetimleri ve ortak Windows Forms denetimleri eklemek için kullanabileceğiniz yardımcı yöntemleri içerir. Her yöntem adı biçim Adddenetimi sınıfına sahiptir. Burada denetim sınıfı , eklemek istediğiniz denetimin sınıf adıdır. Örneğin, belgenize denetim NamedRange eklemek için yöntemini kullanın AddNamedRange .

Aşağıdaki kod örneği, Excel için belge düzeyi projesinde öğesine ekler NamedRangeSheet1 .

Excel.Range range1 = Globals.Sheet1.Range["A1", "D5"];
Microsoft.Office.Tools.Excel.NamedRange namedRange1 =
    Globals.Sheet1.Controls.AddNamedRange(range1, "ChartSource");

Denetimlere erişme ve silme

Tasarım zamanında eklediğiniz denetimler de dahil olmak üzere belgenizdeki tüm denetimleri yinelemek için veya WorksheetDocument özelliğini kullanabilirsinizControls. Tasarım zamanında eklediğiniz denetimlere statik denetimler de denir.

Denetimin Delete yöntemini çağırarak veya her Denetim koleksiyonunun yöntemini çağırarak Remove dinamik denetimleri kaldırabilirsiniz. Aşağıdaki kod örneği, Excel için belge düzeyindeki bir projeden öğesini kaldırmak NamedRangeSheet1 için yöntemini kullanırRemove.

Globals.Sheet1.Controls.Remove("ChartSource");

Çalışma zamanında statik denetimleri kaldıramazsınız. Statik denetimi kaldırmak için veya Remove yöntemini kullanmaya Delete çalışırsanız, bir CannotRemoveControlException oluşturulur.

Not

Belgenin olay işleyicisindeki Shutdown denetimleri program aracılığıyla kaldırmayın. Olay tetiklendiğinde Shutdown belgenin kullanıcı arabirimi öğeleri artık kullanılamaz. Belge kapanmadan önce denetimleri kaldırmak istiyorsanız, kodunuzu Word BeforeSaveBeforeCloseveya veya Excel gibi BeforeCloseBeforeSave başka bir olayın olay işleyicisine ekleyin.

Belgelere konak denetimleri ekleme

Belgelere program aracılığıyla konak denetimleri eklediğinizde, denetimi benzersiz olarak tanımlayan bir ad sağlamanız ve belge üzerinde denetimin nereye ekleneceğini belirtmeniz gerekir. Belirli yönergeler için aşağıdaki konulara bakın:

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

Belge kaydedildiğinde ve kapatıldığında, dinamik olarak oluşturulan tüm konak denetimlerinin olayları kesilir ve veri bağlama işlevlerini kaybederler. Belge yeniden açıldığında konak denetimlerini yeniden oluşturmak için çözümünüze kod ekleyebilirsiniz. Daha fazla bilgi için bkz . Office belgelerinde dinamik denetimleri kalıcı hale getir.

Not

Bu denetimler belgelere program aracılığıyla eklenemediğinden, aşağıdaki konak denetimleri için yardımcı yöntemleri sağlanmaz: XmlMappedRange, XMLNodeve XMLNodes.

Belgelere Windows Forms denetimleri ekleme

Belgeye program aracılığıyla bir Windows Forms denetimi eklediğinizde, denetimin konumunu ve denetimi benzersiz olarak tanımlayan bir ad sağlamanız gerekir. Office çalışma zamanı için Visual Studio Araçları her denetim için yardımcı yöntemler sağlar. Denetimin konumu için bir aralık veya belirli koordinatlar geçirebilmeniz için bu yöntemler aşırı yüklenir.

Bir belge kaydedildiğinde ve kapatıldığında, dinamik olarak oluşturulan tüm Windows Forms denetimleri belgeden kaldırılır. Belge yeniden açıldığında denetimleri yeniden oluşturmak için çözümünüze kod ekleyebilirsiniz. VSTO Eklentisi kullanarak dinamik Windows Forms denetimleri oluşturursanız, denetimler için ActiveX sarmalayıcıları belgede bırakılır. Daha fazla bilgi için bkz . Office belgelerinde dinamik denetimleri kalıcı hale getir.

Not

Windows Forms denetimleri korumalı belgelere program aracılığıyla eklenemez. Denetim eklemek için bir Word belgesinin veya Excel çalışma sayfasının korumasını program aracılığıyla kaldırırsanız, belge kapatıldığında denetimin ActiveX sarmalayıcısını kaldırmak için ek kod yazmanız gerekir. Denetimin ActiveX sarmalayıcısı korumalı belgelerden otomatik olarak silinmez.

Özel denetim ekleme

Özel kullanıcı denetimi gibi kullanılabilir yardımcı yöntemler tarafından desteklenmeyen bir eklemek Control istiyorsanız aşağıdaki yöntemleri kullanın:

  • Excel için bir nesnenin AddControl yöntemlerinden ControlCollection birini kullanın.

  • Word için bir nesnenin AddControl yöntemlerinden ControlCollection birini kullanın.

    Denetimi eklemek için, denetimin Controlkonumunu ve denetimi yöntemine benzersiz olarak tanımlayan AddControl bir ad geçirin. yöntemi, AddControl denetimin çalışma sayfası veya belgeyle nasıl etkileşim kurduğunu tanımlayan bir nesne döndürür. AddControl yöntemi bir ControlSite (Excel için) veya bir ControlSite nesne (Word için) döndürür.

    Aşağıdaki kod örneği, belge düzeyinde bir Excel projesinde AddControl çalışma sayfasına dinamik olarak özel kullanıcı denetimi eklemek için yönteminin nasıl kullanılacağını gösterir. Bu örnekte, kullanıcı denetimi olarak adlandırılır UserControl1ve Range olarak adlandırılır range1. Bu örneği kullanmak için projedeki n Sheet sınıfından çalıştırın.

    UserControl1 customControl = new UserControl1();
    
    Microsoft.Office.Tools.Excel.ControlSite dynamicControl =
        this.Controls.AddControl(customControl, range1, "dynamic");
    

Özel denetimlerin üyelerini kullanma

Çalışma sayfasına veya belgeye denetim eklemek için yöntemlerden birini AddControl kullandıktan sonra iki farklı denetim nesnesine sahip olursunuz:

  • Control Özel denetimi temsil eden.

  • Çalışma ControlSitesayfasına veya OLEControl belgeye eklendikten sonra denetimi temsil eden , OLEObjectveya nesnesi.

    Bu denetimler arasında birçok özellik ve yöntem paylaşılır. Bu üyelere uygun denetim aracılığıyla erişmeniz önemlidir:

  • Yalnızca özel denetime ait üyelere erişmek için kullanın Control.

  • Denetimler tarafından paylaşılan üyelere erişmek için , OLEObjectveya OLEControl nesnesini kullanınControlSite.

    öğesinden paylaşılan bir üyeye Controlerişirseniz, uyarı veya bildirimde bulunmadan başarısız olabilir veya geçersiz sonuçlar üretebilir. Gereken yöntem veya özellik kullanılamadığı sürece, her zaman , OLEObjectveya OLEControl nesnesinin yöntemlerini veya özelliklerini ControlSitekullanın; yalnızca o zaman öğesine başvurmanız Controlgerekir.

    Örneğin, hem sınıfın ControlSite hem de sınıfın Control bir Top özelliği vardır. Denetimin üst kısmıyla belgenin üst kısmı arasındaki uzaklığı almak veya ayarlamak için özelliğini değil Top özelliğini kullanın TopControlSite.Control

    // Property is set in relation to the document.
    dynamicControl.Top = 100;
    
    // Property is set in relation to the container control.
    customControl.Top = 100;