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

Şunlar için geçerlidir:yesnoVisual Studio Mac için Visual Studio noVisual Studio Code

Çalışma zamanında Microsoft Office bir 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 uygulama 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:

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 Adddenetim 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 denetimleri silme

Tasarım zamanında eklediğiniz denetimler de dahil olmak üzere belgenizdeki tüm denetimlerde yineleme yapmak 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, Remove Excel için belge düzeyindeki bir projeden Sheet1 öğesini kaldırmak NamedRange için yöntemini kullanır.

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 veya gibi BeforeCloseBeforeSave başka bir olayın olay işleyicisine veya BeforeCloseBeforeSave Excel için 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 denetimin belgede 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ış.

Bir belge kaydedilip kapatıldığında, dinamik olarak oluşturulan tüm konak denetimlerinin olaylarıyla bağlantısı 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 belgelerde 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öntemler sağlanmaz: XmlMappedRange, XMLNodeve XMLNodes.

Belgelere Windows Forms denetimleri ekleme

Belgeye program aracılığıyla Windows Forms denetimi eklediğinizde, denetimin konumunu ve denetimi benzersiz olarak tanımlayan bir ad sağlamanız gerekir. Office için Visual Studio Araçları çalışma zamanı 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üklenmiştir.

Belge kaydedilip 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 kalır. Daha fazla bilgi için bkz. Office belgelerde dinamik denetimleri kalıcı hale getir.

Not

Windows Forms denetimleri korumalı belgelere program aracılığıyla eklenemez. Word belgesinin veya Excel çalışma sayfasının korumasını program aracılığıyla kaldırarak denetim eklerseniz, belge kapatıldığında denetimin ActiveX sarmalayıcısını kaldırmak için ek kod yazmanız gerekir. Denetimin ActiveX sarmalayıcı 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 ControlCollection nesnenin AddControl yöntemlerinden birini kullanın.

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

    Denetimi eklemek için , denetimi için bir konum ve yöntemine denetimi AddControl benzersiz olarak tanımlayan bir ad geçirinControl. 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 projesindeki 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 adı da olarak adlandırılır range1. Bu örneği kullanmak için projedeki nSheet 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. Uygun denetim aracılığıyla bu üyelere 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 verebilir. Gereken yöntem veya özellik kullanılamadığı sürece, her zaman , OLEObjectveya OLEControl nesnesinin yöntemlerini veya özelliklerini ControlSitekullanın; yalnızca o zaman başvuruda Controlbulunmanız gerekir.

    Örneğin, hem sınıfın ControlSite hem de sınıfın Control bir Top özelliği vardır. Denetimin üst ve belgenin üstü arasındaki mesafeyi almak veya ayarlamak için özelliğinin 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;
    

Ayrıca bkz.