İzlenecek yol: VSTO eklenti projesinde çalışma zamanında çalışma sayfasına denetim ekleme
Excel VSTO Eklentisi kullanarak herhangi bir açık çalışma sayfasına denetim ekleyebilirsiniz. Bu kılavuzda, kullanıcıların çalışma sayfasına bir , NamedRangeve ListObject eklemesine olanak tanımak için ButtonŞeridin nasıl kullanılacağı gösterilmektedir. Bilgi için bkz . Çalışma zamanında Office belgelerine denetim ekleme.
Şunlar için geçerlidir: Bu konudaki bilgiler Excel için VSTO Eklenti projeleri için geçerlidir. Daha fazla bilgi edinmek için bkz. Office Uygulaması ve Proje Türüne Göre Kullanılabilen Özellikler.
Bu izlenecek yol aşağıdaki görevleri gösterir:
Çalışma sayfasına denetim eklemek için bir kullanıcı arabirimi (UI) sağlama.
Çalışma sayfasına denetim ekleme.
Çalışma sayfasından denetimler kaldırılıyor.
Not
Bilgisayarınız, aşağıdaki yönergelerde yer alan Visual Studio kullanıcı arabirimi öğelerinden bazıları için farklı adlar veya konumlar gösterebilir. Sahip olduğunuz Visual Studio sürümü ve kullandığınız ayarlar bu öğeleri belirler. Daha fazla bilgi için bkz . IDE'yi kişiselleştirme.
Önkoşullar
Bu izlenecek yolu tamamlamak için aşağıdaki bileşenlere ihtiyacınız vardır:
Microsoft Office geliştirici araçlarını içeren bir Visual Studio sürümü. Daha fazla bilgi için bkz . Office çözümleri geliştirmek için bilgisayar yapılandırma.
Excel
Yeni bir Excel VSTO Eklenti projesi oluşturma
Excel VSTO Eklenti projesi oluşturarak başlayın.
Yeni bir Excel VSTO Eklenti projesi oluşturmak için
Visual Studio'da, ExcelDynamicControls adlı bir Excel VSTO Eklenti projesi oluşturun. Daha fazla bilgi için bkz . Nasıl yapılır: Visual Studio'da Office Projeleri Oluşturma.
Microsoft.Office.Tools.Excel.v4.0.Utilities.dll derlemesine başvuru ekleyin. Bu kılavuzun ilerleyen bölümlerinde bir çalışma sayfasına program aracılığıyla Windows Forms denetimi eklemek için bu başvuru gereklidir.
Çalışma sayfasına denetim eklemek için kullanıcı arabirimi sağlama
Excel Şeridi'ne özel bir sekme ekleyin. Kullanıcılar, çalışma sayfasına denetim eklemek için sekmedeki onay kutularını seçebilir.
Çalışma sayfasına denetim eklemek için kullanıcı arabirimi sağlamak için
Proje menüsünde Yeni Öğe Ekle'ye tıklayın.
Yeni Öğe Ekle iletişim kutusunda Şerit (Görsel Tasarım Aracı) öğesini seçin ve ekle'ye tıklayın.
Şerit Tasarım Aracı Ribbon1.cs veya Ribbon1.vb adlı bir dosya açılır ve varsayılan sekme ve grup görüntülenir.
Araç Kutusu'nun Office Şerit Denetimleri sekmesinden, bir CheckBox denetimini group1'e sürükleyin.
Seçmek için CheckBox1'e tıklayın.
Özellikler penceresinde aşağıdaki özellikleri değiştirin.
Özellik Değer Ad Düğme Etiket Düğme Group1'e ikinci bir onay kutusu ekleyin ve aşağıdaki özellikleri değiştirin.
Özellik Değer Ad Namedrange Etiket Namedrange Grup1'e üçüncü bir onay kutusu ekleyin ve aşağıdaki özellikleri değiştirin.
Özellik Değer Ad Listobject Etiket Listobject
Çalışma sayfasına denetim ekleme
Yönetilen denetimler yalnızca kapsayıcı görevi gören konak öğelerine eklenebilir. VSTO Eklenti projeleri herhangi bir açık çalışma kitabıyla çalıştığından, VSTO Eklentisi denetimi eklemeden önce çalışma sayfasını bir konak öğesine dönüştürür veya var olan bir konak öğesini alır. Açık çalışma sayfasını temel alan bir Worksheet konak öğesi oluşturmak için her denetimin tıklama olay işleyicilerine kod ekleyin. Ardından, çalışma sayfasındaki geçerli seçime bir , ve ListObject ekleyinButtonNamedRange.
Çalışma sayfasına denetim eklemek için
Şerit Tasarım Aracı Düğme'ye çift tıklayın.
Click Düğme onay kutusunun olay işleyicisi Kod Düzenleyicisi'nde açılır.
Olay işleyicisini
Button_Click
aşağıdaki kodla değiştirin.Bu kod, çalışma kitabındaki
GetVstoObject
ilk çalışma sayfasını temsil eden bir konak öğesi almak için yöntemini kullanır ve seçili durumdaki hücreye bir Button denetim ekler.private void Button_Click(object sender, RibbonControlEventArgs e) { Worksheet worksheet = Globals.Factory.GetVstoObject( Globals.ThisAddIn.Application.ActiveWorkbook.Worksheets[1]); string buttonName = "MyButton"; if (((RibbonCheckBox)sender).Checked) { Excel.Range selection = Globals.ThisAddIn.Application.Selection as Excel.Range; if (selection != null) { Microsoft.Office.Tools.Excel.Controls.Button button = new Microsoft.Office.Tools.Excel.Controls.Button(); worksheet.Controls.AddControl(button, selection, buttonName); } } else { worksheet.Controls.Remove(buttonName); } }
Çözüm Gezgini'da Şerit1.cs veya Şerit1.vb'yi seçin.
Görünüm menüsünde Tasarım Aracı'e tıklayın.
Şerit Tasarım Aracı NamedRange öğesine çift tıklayın.
Olay işleyicisini
NamedRange_Click
aşağıdaki kodla değiştirin.Bu kod, çalışma kitabındaki
GetVstoObject
ilk çalışma sayfasını temsil eden bir konak öğesi almak için yöntemini kullanır ve seçili durumdaki hücre veya hücreler için bir NamedRange denetim tanımlar.private void NamedRange_Click(object sender, RibbonControlEventArgs e) { Worksheet worksheet = Globals.Factory.GetVstoObject( Globals.ThisAddIn.Application.ActiveWorkbook.Worksheets[1]); string Name = "MyNamedRange"; if (((RibbonCheckBox)sender).Checked) { Excel.Range selection = Globals.ThisAddIn.Application.Selection as Excel.Range; if (selection != null) { worksheet.Controls.AddNamedRange(selection, Name); } } else { worksheet.Controls.Remove(Name); } }
Şerit Tasarım Aracı ListObject öğesine çift tıklayın.
Olay işleyicisini
ListObject_Click
aşağıdaki kodla değiştirin.Bu kod, çalışma kitabındaki
GetVstoObject
ilk çalışma sayfasını temsil eden ve seçili durumdaki hücre veya hücreler için bir tanımlayan bir ListObject konak öğesi almak için yöntemini kullanır.private void ListObject_Click(object sender, RibbonControlEventArgs e) { Worksheet worksheet = Globals.Factory.GetVstoObject( Globals.ThisAddIn.Application.ActiveWorkbook.Worksheets[1]); string listObjectName = "MyListObject"; if (((RibbonCheckBox)sender).Checked) { Excel.Range selection = Globals.ThisAddIn.Application.Selection as Excel.Range; if (selection != null) { worksheet.Controls.AddListObject(selection, listObjectName); } } else { worksheet.Controls.Remove(listObjectName); } }
Şerit kod dosyasının en üstüne aşağıdaki deyimleri ekleyin.
Çalışma sayfasından denetimleri kaldırma
Çalışma sayfası kaydedildiğinde ve kapatıldığında denetimler kalıcı olmaz. Çalışma sayfası kaydedilmeden önce oluşturulan tüm Windows Forms denetimlerini program aracılığıyla kaldırmanız gerekir; aksi takdirde çalışma kitabı yeniden açıldığında denetimin yalnızca bir ana hattı görüntülenir. Oluşturulan konak öğesinin WorkbookBeforeSave denetim koleksiyonundan Windows Forms denetimlerini kaldıran olaya kod ekleyin. Daha fazla bilgi için bkz . Office belgelerinde dinamik denetimleri kalıcı hale getir.
Çalışma sayfasından denetimleri kaldırmak için
Çözüm Gezgini'da ThisAddIn.cs veya ThisAddIn.vb öğesini seçin.
Görünüm menüsünde Kod'a tıklayın.
Sınıfına aşağıdaki yöntemi
ThisAddIn
ekleyin. Bu kod çalışma kitabındaki ilk çalışma sayfasını alır ve çalışma sayfasının oluşturulmuş bir çalışma sayfası nesnesi olup olmadığını denetlemek için yöntemini kullanırHasVstoObject
. Oluşturulan çalışma sayfası nesnesinin denetimleri varsa, kod bu çalışma sayfası nesnesini alır ve denetim koleksiyonunda yinelenir ve denetimleri kaldırır.void Application_WorkbookBeforeSave(Microsoft.Office.Interop.Excel.Workbook workbook, bool SaveAsUI, ref bool Cancel) { Excel.Worksheet worksheet = workbook.Worksheets[1] as Excel.Worksheet; if (Globals.Factory.HasVstoObject(worksheet) && Globals.Factory.GetVstoObject(worksheet).Controls.Count > 0) { Worksheet vstoWorksheet = Globals.Factory.GetVstoObject(worksheet); while (vstoWorksheet.Controls.Count > 0) { object vstoControl = vstoWorksheet.Controls[0]; vstoWorksheet.Controls.Remove(vstoControl); } } }
C# dilinde, olay için bir olay işleyicisi WorkbookBeforeSave oluşturmanız gerekir. Bu kodu yöntemine
ThisAddIn_Startup
yerleştirebilirsiniz. Olay işleyicileri oluşturma hakkında daha fazla bilgi için bkz . Nasıl yapılır: Office projelerinde olay işleyicileri oluşturma.ThisAddIn_Startup
yöntemini aşağıdaki kodla değiştirin.private void ThisAddIn_Startup(object sender, System.EventArgs e) { this.Application.WorkbookBeforeSave += new Microsoft.Office.Interop.Excel.AppEvents_WorkbookBeforeSaveEventHandler (Application_WorkbookBeforeSave); }
Çözümü test etme
Şeritteki özel bir sekmeden seçerek çalışma sayfasına denetimler ekleyin. Çalışma sayfasını kaydettiğinizde, bu denetimler kaldırılır.
Çözümü test etmek için.
Projenizi çalıştırmak için F5 tuşuna basın.
Sayfa1'de herhangi bir hücreyi seçin.
Eklentiler sekmesine tıklayın.
group1 grubunda Düğme'ye tıklayın.
Seçili hücrede bir düğme görüntülenir.
Sayfa1'de farklı bir hücre seçin.
group1 grubunda NamedRange'e tıklayın.
Seçili hücre için adlandırılmış aralık tanımlanır.
Sayfa1'de bir hücre serisi seçin.
group1 grubunda ListObject'e tıklayın.
Seçili hücreler için bir liste nesnesi eklenir.
Çalışma sayfasını kaydedin.
Sayfa1'e eklediğiniz denetimler artık görünmez.
Sonraki adımlar
Bu konudan Excel VSTO Eklenti projelerindeki denetimler hakkında daha fazla bilgi edinebilirsiniz:
- Denetimleri çalışma sayfasına kaydetme hakkında bilgi edinmek için, Office geliştirme örnekleri ve izlenecek yollarda Excel VSTO Eklentisi Dinamik Denetimler Örneği'ne bakın.