İzlenecek yol: Bir belgeye ekleme denetimlerini bir uygulama düzeyinde eklentisi çalışma zamanı
Uygulama düzeyi eklentisi kullanarak herhangi bir açık Microsoft Office Word belgesine denetimler ekleyebilirsiniz.Bu izlenecek yolda, Button veya RichTextContentControl'ü belgeye eklemeyi sağlayan Şerit'in nasıl kullanıldığı gösterilir.
İçin geçerlidir: bu konudaki bilgiler Word 2010 uygulamalarının uygulama düzeyi projelerine yöneliktir.Daha fazla bilgi için bkz. Office Uygulamalarında Kullanılabilir Özellikler ve Proje Türü.
Bu örneklerde aşağıdaki görevler gösterilir:
Yeni Word eklenti projesi oluşturma.
Belgeye denetimler eklemek için kullanıcı arayüzü (UI) sağlama.
Belgeye çalışma zamanında denetimler ekleme.
Belgeden denetimleri kaldırma.
[!NOT]
Bilgisayarınızda, aşağıdaki yönergelerde yer alan Visual Studio kullanıcı arabirimi öğelerinden bazılarının adı veya konumu farklı gösterilebilir. Bu öğeleri bilgisayarınızdaki Visual Studio sürümü ve kullandığınız ayarlar belirler. Daha fazla bilgi için bkz: Visual Studio ayarları.
Önkoşullar
Bu örneği tamamlamak için aşağıdaki bileşenler gerekmektedir:
-
Microsoft Office geliştirici araçlarını içeren bir Visual Studio 2012 sürümü. Daha fazla bilgi için bkz: [Office Çözümeri Geliştirmek İçin Bilgisayarı Yapılandırma](bb398242\(v=vs.110\).md).
- Word 2013 veya Word 2010.
Yeni Word Eklenti Projesi Oluşturma
Yeni Word eklenti projesi oluşturmaya başlayın.
Yeni Word eklenti projesi oluşturmak için
WordDynamicControls isminde Word uygulama düzeyi eklentisi oluşturun.Daha fazla bilgi için bkz. Nasıl yapılır: Visual Studio Office projeler oluşturmak.
Başvuru Ekle Microsoft.Office.Tools.Word.v4.0.Utilities.dll derlemesi.Bu izlenecek yol sonrasında Windows Forms denetimini belgeye eklemek için, bu başvuru gereklidir.
Belgeye Denetim Eklemek için Bir UI Sağlama
Word'deki Şerite özel bir sekme ekleyin.Kullanıcılar belgeye denetim eklemek için sekmedeki onay kutularını işaretleyebilir.
Belgeye denetim eklemek amacıyla bir UI sağlamak için
Proje menüsünde, Yeni Öğe Ekle'yi tıklatın.
Yeni Öge Ekle iletişim kutusunda, Şerit (Görsel Tasarımcı)'yı seçin.
Yeni Şerit'in adını MyRibbon olarak değiştirin ve Ekle'ye tıklayın.
MyRibbon.cs ya da MyRibbon.vb dosyası Şerit Tasarımcısı'nda açılır ve varsayılan bir sekme ve grup görüntüler.
Şerit Tasarımcısı'nda group1 grubuna tıklayın.
İçinde özelliklerini Değiştir penceresinde etiketi özelliği için group1 denetimleri eklemek için.
Araç Kutusu'nun Office Şerit Denetimleri sekmesinden group1'e bir CheckBox denetimi sürükleyin.
Seçmek için CheckBox1'e tıklatın.
Özellikler penceresindeki aşağıdaki özellikleri değiştirin.
Özellik
Value
Ad
addButtonCheckBox
Etiket
Ekle Düğmesi
group1'e ikinci bir onay kutusu denetimi ekleyin ve aşağıdaki özellikleri değiştirin.
Özellik
Value
Ad
addRichTextCheckBox
Etiket
Zengin Metin Denetimi Ekle
Şerit Tasarımcısı'nda Ekle Düğmesi'ne çift tıklayın.
Click Olay işleyicisi Düğme Ekle onay kutusunun Kod Düzenleyicisi'nde açılır.
Şerit Tasarımcısına dönün ve Zengin Metin Denetimi Ekle'yi çift tıklayın.
Click Zengin metin denetimi ekle onay kutusunun olay işleyicisi Kod Düzenleyicisi'nde açılır.
Bu anlatımın sonunda, etkin belgede denetimleri eklemek ve kaldırmak için bu olay işleyicilerine kod ekleyeceksiniz.
Etkin Belgede Denetimleri Ekleme ve Kaldırma
Eklenti kodunda, bir denetim eklemeden önce etkin belgeyi, Microsoft.Office.Tools.Word.Documentkonak öğesi'ne değiştirmelisiniz.Office çözümlerinde, yönetilen denetimler sadece denetimler için kapsayıcı olarak davranan konak öğelerine eklenebilir.Uygulama düzeyi eklenti projelerinde, konak öğeleri GetVstoObject yöntemi kullanılarak çalışma zamanında oluşturulabilir.
Etkin belgede Button veya RichTextContentControl eklemek veya kaldırmak için çağrılabilecek ThisAddIn sınıfına yöntemler ekleyin.Bu anlatımdan sonra, Şerit üzerindeki onay kutularının Click olay işleyicilerinden bu yöntemleri çağıracaksınız.
Etkin belgede denetimleri eklemek ve kaldırmak için
Çözüm Gezgini'nde kod dosyasını Kod Düzenleyici'de açmak için ThisAddIn.cs ya daThisAddIn.vb dosyasına çift tıklayın.
Aşağıdaki kodu ThisAddIn sınıfına ekleyin.Bu kod, belgeye eklenecek denetimleri temsil eden Button ve RichTextContentControl nesnelerini bildirir.
Private button As Microsoft.Office.Tools.Word.Controls.Button = Nothing Private richTextControl As RichTextContentControl = Nothing
private Microsoft.Office.Tools.Word.Controls.Button button = null; private RichTextContentControl richTextControl = null;
Aşağıdaki yöntemi ThisAddIn sınıfına ekleyin.Kullanıcı, Şerit üzerindeki Düğme Ekle onay kutusunu tıklattığında, bu yöntem ekler bir Button onay kutusu seçiliyse geçerli seçime Button onay kutusu işaretli değilse.
Friend Sub ToggleButtonOnDocument() Dim vstoDocument As Document = Globals.Factory.GetVstoObject(Me.Application.ActiveDocument) Dim name As String = "MyButton" If Globals.Ribbons.MyRibbon.addButtonCheckBox.Checked Then Dim selection = Me.Application.Selection If selection IsNot Nothing AndAlso selection.Range IsNot Nothing Then button = vstoDocument.Controls.AddButton( _ selection.Range, 100, 30, name) End If Else vstoDocument.Controls.Remove(name) End If End Sub
internal void ToggleButtonOnDocument() { Document vstoDocument = Globals.Factory.GetVstoObject(this.Application.ActiveDocument); string name = "MyButton"; if (Globals.Ribbons.MyRibbon.addButtonCheckBox.Checked) { Word.Selection selection = this.Application.Selection; if (selection != null && selection.Range != null) { button = vstoDocument.Controls.AddButton( selection.Range, 100, 30, name); } } else { vstoDocument.Controls.Remove(name); } }
Aşağıdaki yöntemi ThisAddIn sınıfına ekleyin.Kullanıcı, Şerit üzerindeki zengin metin denetimi ekle onay kutusunu tıklattığında, bu yöntem ekler bir RichTextContentControl onay kutusu seçiliyse geçerli seçime RichTextContentControl onay kutusu işaretli değilse.
Friend Sub ToggleRichTextControlOnDocument() Dim vstoDocument As Document = Globals.Factory.GetVstoObject(Me.Application.ActiveDocument) Dim name As String = "MyRichTextBoxControl" If Globals.Ribbons.MyRibbon.addRichTextCheckBox.Checked Then Dim selection = Me.Application.Selection If selection IsNot Nothing AndAlso selection.Range IsNot Nothing Then richTextControl = vstoDocument.Controls.AddRichTextContentControl( _ selection.Range, name) End If Else vstoDocument.Controls.Remove(name) End If End Sub
internal void ToggleRichTextControlOnDocument() { Document vstoDocument = Globals.Factory.GetVstoObject(this.Application.ActiveDocument); string name = "MyRichTextBoxControl"; if (Globals.Ribbons.MyRibbon.addRichTextCheckBox.Checked) { Word.Selection selection = this.Application.Selection; if (selection != null && selection.Range != null) { richTextControl = vstoDocument.Controls.AddRichTextContentControl( selection.Range, name); } } else { vstoDocument.Controls.Remove(name); } }
Belge Kaydedildiğinde Düğme Denetimini Kaldırma
Windows Forms denetimleri, belge kaydedildiğinde ve sonra kapatıldığında kalıcı değildir.Fakat, belgedeki her denetim için ActiveX sarmalayıcısı ve bu sarmalayıcının kenarlığı son kullanıcı tarafından, belge yeniden açıldığında görülebilir.Dinamik olarak oluşturulan eklentideki Windows Froms denetimlerini temizlemek için birçok yol vardır.Bu anlatımda, belge kaydedildiğinde programlı olarak Button denetimini kaldırabilrisiniz.
Belge kaydedildiğinde düğme denetimini kaldırmak için
ThisAddIn.cs veya ThisAddIn.vb kod dosyasında aşağıdaki yöntemi ThisAddIn sınıfına ekleyin.Bu yöntem, DocumentBeforeSave olayı için bir olay işleyicisidir.Eğer kaydedilen belge, onunla ilişkilendirilen bir Document konak öğesine sahipse, olay işleyicisi konak öğesini alır ve Button denetimini, eğer mevcutsa, kaldırır.
Private Sub Application_DocumentBeforeSave(ByVal Doc As Word.Document, _ ByRef SaveAsUI As Boolean, ByRef Cancel As Boolean) Handles Application.DocumentBeforeSave Dim isExtended As Boolean = Globals.Factory.HasVstoObject(Doc) If isExtended Then Dim vstoDocument As Document = Globals.Factory.GetVstoObject(Doc) If vstoDocument.Controls.Contains(button) Then vstoDocument.Controls.Remove(button) Globals.Ribbons.MyRibbon.addButtonCheckBox.Checked = False End If End If End Sub
private void Application_DocumentBeforeSave(Word.Document Doc, ref bool SaveAsUI, ref bool Cancel) { bool isExtended = Globals.Factory.HasVstoObject(Doc); if (isExtended) { Microsoft.Office.Tools.Word.Document vstoDocument = Globals.Factory.GetVstoObject(Doc); if (vstoDocument.Controls.Contains(button)) { vstoDocument.Controls.Remove(button); Globals.Ribbons.MyRibbon.addButtonCheckBox.Checked = false; } } }
C#'ta, ThisAddIn_Startup olay işleyicisine aşağıdaki kodu ekleyin.Bu kod C#'ta Application_DocumentBeforeSave olay işleyicisini DocumentBeforeSave olayı ile bağlamak için gereklidir.
this.Application.DocumentBeforeSave += new Word.ApplicationEvents4_DocumentBeforeSaveEventHandler( Application_DocumentBeforeSave);
Kullanıcı Şerit Üzerindeki Onay Kutularına Tıkladığında Denetimleri Ekleme ve Kaldırma
Son olarak, belgedeki denetimleri eklemek ve kaldırmak için Şerit'e eklediğiniz onay kutularının Click olay işleyicilerini değiştirin.
Kullanıcı Şerit üzerindeki onay Kutularına tıkladığında denetimleri eklemek ve kaldırmak için
MyRibbon.cs veya MyRibbon.vb kod dosyasında, yaratılan addButtonCheckBox_Click ve addRichTextCheckBox_Click ola işleyicilerini aşağıdaki kodla değiştirin.Bu kod, anlatımda önceden ThisAddIn sınıfına eklediğiniz ToggleButtonOnDocument ve ToggleRichTextControlOnDocument yöntemlerini çağırmak için bu olay işleyicilerini yeniden tanımlar.
Private Sub addButtonCheckBox_Click(ByVal sender As System.Object, _ ByVal e As RibbonControlEventArgs) Handles addButtonCheckBox.Click Globals.ThisAddIn.ToggleButtonOnDocument() End Sub Private Sub addRichTextCheckBox_Click(ByVal sender As System.Object, _ ByVal e As RibbonControlEventArgs) Handles addRichTextCheckBox.Click Globals.ThisAddIn.ToggleRichTextControlOnDocument() End Sub
private void addButtonCheckBox_Click(object sender, RibbonControlEventArgs e) { Globals.ThisAddIn.ToggleButtonOnDocument(); } private void addRichTextCheckBox_Click(object sender, RibbonControlEventArgs e) { Globals.ThisAddIn.ToggleRichTextControlOnDocument(); }
Çözümün Sınanması
Belgeye denetimleri Şerit üzerindeki özel bir sekmeden seçerek ekleyin.Belgeyi kaydettiğinizde, Button denetimi kaldırılır.
Çözümü test etmek için
F5 tuşuna basarak projeyi çalıştırın.
Etkin belgede, belgeye yeni boş paragraflar eklemek için ENTER'a birçok kez basın.
İlk paragrafı seçin.
Eklentiler sekmesine tıklayın.
Denetimler Ekle grubunda, Düğme Ekle'ye tıklayın.
İlk paragrafta bir düğme görünür.
Son paragrafı seçin.
Denetimler Ekle grubunda, Zengin Metin Denetimi Ekle'ye tıklayın.
Zengin metin içerik denetimi son paragrafa eklenir.
Belgeyi kaydedin.
Düğme belgeden kaldırılır.
Sonraki Adımlar
Uygulama düzeyi eklentilerindeki denetimler hakkında daha fazla bilgiyi bu konulardan öğrenebilirsiniz:
Çalışma zamanında belgeye birçok diğer türden denetimin nasıl eklendiğini ve belge tekrar açıldığında denetimlerin nasıl yeniden oluşturulduğunu gösteren bir örnek için, bkz. Office Geliştirme Örnekleri ve İzlenecek Yollar içinde Word Add-In Dynamic Controls Sample.
Excel uygulama düzeyi eklentisi kullanarak denetimlerin çalışma sayfasına nasıl eklendiğini gösteren bir anlatım için, bkz. İzlenecek yol: Uygulama düzeyinde projesinde çalışma zamanında bir çalışma denetimleri ekleme.
Ayrıca bkz.
Görevler
Nasıl yapılır: Windows Forms denetimleri eklemek için Office belgeleri
Nasıl yapılır: Word belgeleri için içerik denetimleri ekleme
Kavramlar
Belgeye Çalışma Zamanında Denetim Ekleme
Office Belgelerinde Dinamik Denetimleri Kalıcı Kılma