İzlenecek yol: Çalışma zamanında şeritteki denetimleri güncelleştirme
Bu izlenecek yol, şerit Office uygulaması'a yüklendikten sonra şeritteki denetimleri güncelleştirmek için Şerit nesne modelinin nasıl kullanılacağını gösterir.
Şunlar için geçerlidir: Bu konudaki bilgiler, aşağıdaki uygulamalar için belge düzeyi projeler ve VSTO Eklenti projeleri için geçerlidir: Excel; InfoPath 2013 ve InfoPath 2010; Outlook; Powerpoint; Proje; Visio; Kelime. Daha fazla bilgi için bkz. Office uygulaması ve proje türüne göre kullanılabilen özellikler.
Örnek, Microsoft Office Outlook'ta birleşik giriş kutusunu ve menüyü doldurmak için Northwind örnek veritabanından veri çeker. Bu denetimlerde seçtiğiniz öğeler, e-posta iletisindeki To ve Subject gibi alanları otomatik olarak doldurur.
Bu izlenecek yol aşağıdaki görevleri gösterir:
Yeni bir Outlook VSTO Eklenti projesi oluşturun.
Özel bir Şerit grubu tasarlama.
Özel grubu yerleşik bir sekmeye ekleyin.
Şeritteki denetimleri çalışma zamanında güncelleştirin.
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 . Visual Studio 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.
Microsoft Outlook
Yeni bir Outlook VSTO Eklenti projesi oluşturma
İlk olarak, bir Outlook VSTO Eklenti projesi oluşturun.
Yeni bir Outlook VSTO Eklenti projesi oluşturmak için
Visual Studio'da, Ribbon_Update_At_Runtime adlı bir Outlook VSTO Eklenti projesi oluşturun.
Yeni Proje iletişim kutusunda Çözüm için dizin oluştur'u seçin.
Projeyi varsayılan proje dizinine kaydedin.
Daha fazla bilgi için bkz . Nasıl yapılır: Visual Studio'da Office projeleri oluşturma.
Özel şerit grubu tasarlama
Bu örneğin şeridi, kullanıcı yeni bir posta iletisi oluşturduğunda görüntülenir. Şerit için özel bir grup oluşturmak için, önce projenize bir Şerit öğesi ekleyin ve ardından şerit Tasarım Aracı grubu tasarlayın. Bu özel grup, bir veritabanından adları ve sipariş geçmişlerini çekerek müşterilere takip e-posta iletileri oluşturmanıza yardımcı olur.
Özel grup tasarlamak 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.
Yeni Şeridin adını CustomerRibbon olarak değiştirin ve Ekle'ye tıklayın.
CustomerRibbon.cs veya CustomerRibbon.vb dosyası Şerit Tasarım Aracı açılır ve varsayılan bir sekme ve grup görüntüler.
Şerit Tasarım Aracı tıklayarak seçin.
Özellikler penceresinde, RibbonType özelliğinin yanındaki açılan oka tıklayın ve ardından Microsoft.Outlook.Mail.Compose'a tıklayın.
Bu, kullanıcı Outlook'ta yeni bir posta iletisi oluşturduğunda şeridin görünmesini sağlar.
Şerit Tasarım Aracı, seçmek için Grup1'e tıklayın.
Özellikler penceresinde Etiket'i Müşteri Satın Almaları olarak ayarlayın.
Araç Kutusu'nun Office Şerit Denetimleri sekmesinden Bir ComboBox'ı Müşteri Satın Almaları grubuna sürükleyin.
ComboBox1'e tıklayarak seçin.
Özellikler penceresinde Etiket'i Müşteriler olarak ayarlayın.
Araç Kutusu'nun Office Şerit Denetimleri sekmesinden Menü'yü Müşteri Satın Almaları grubuna sürükleyin.
Özellikler penceresinde Etiket'i Satın Alınan Ürün olarak ayarlayın.
Dinamik'i true olarak ayarlayın.
Bu, şerit Office uygulaması'a yüklendikten sonra çalışma zamanında menüye denetim eklemenizi ve kaldırmanızı sağlar.
Özel grubu yerleşik bir sekmeye ekleme
Yerleşik sekme, Outlook Gezgini veya Denetçisi şeridinde bulunan bir sekmedir. Bu yordamda, özel grubu yerleşik bir sekmeye ekleyecek ve ardından özel grubun sekmedeki konumunu belirteceksiniz.
Özel grubu yerleşik bir sekmeye eklemek için
Seçmek için SekmeAddins (Yerleşik) sekmesine tıklayın.
Özellikler penceresinde ControlId özelliğini genişletin ve OfficeId değerini TabNewMailMessage olarak ayarlayın.
Bu, Yeni bir posta iletisinde görüntülenen şeridin İletiler sekmesine Müşteri Satın Almaları grubunu ekler.
Seçmek için Müşteri Satın Almaları grubuna tıklayın.
Özellikler penceresinde Position özelliğini genişletin, PositionType özelliğinin yanındaki açılan oka tıklayın ve ardından BeforeOfficeId öğesine tıklayın.
OfficeId özelliğini GroupClipboard olarak ayarlayın.
Bu, Müşteri Satın Almaları grubunu İletiler sekmesinin Pano grubundan önce konumlandırır.
Veri kaynağı oluşturma
Projenize yazılan bir veri kümesi eklemek için Veri Kaynakları penceresini kullanın.
Veri kaynağı oluşturmak için
Veri menüsünde Yeni Veri Kaynağı Ekle'ye tıklayın.
Bu, Veri Kaynağı Yapılandırma Sihirbazı'nı başlatır.
Veritabanı'yı seçin ve İleri'ye tıklayın.
Veri kümesi'ne tıklayın ve ardından İleri'ye tıklayın.
Northwind örnek Microsoft SQL Server Compact 4.0 veritabanına bir veri bağlantısı seçin veya Yeni Bağlan ion düğmesini kullanarak yeni bir bağlantı ekleyin.
Bir bağlantı seçildikten veya oluşturulduktan sonra İleri'ye tıklayın.
bağlantı dizesi kaydetmek için İleri'ye tıklayın.
Veritabanı Nesnelerinizi Seçin sayfasında Tablolar'ı genişletin.
Aşağıdaki tabloların her birinin yanındaki onay kutusunu seçin:
Müşteriler
Sipariş Ayrıntıları
Siparişler
Ürünler
Finish (Son) düğmesine tıklayın.
Çalışma zamanında özel gruptaki denetimleri güncelleştirme
Şerit nesne modelini kullanarak aşağıdaki görevleri gerçekleştirin:
Müşteriler birleşik giriş kutusuna müşteri adları ekleyin.
Satın Alınan Ürünler menüsüne satış siparişlerini ve satılan ürünleri temsil eden menü ve düğme denetimleri ekleyin.
Müşteriler birleşik giriş kutusundaki ve Satın Alınan Ürünler menüsündeki verileri kullanarak yeni posta iletilerinin To, Subject ve Body alanlarını doldurun.
Şerit nesne modelini kullanarak özel gruptaki denetimleri güncelleştirmek için
Proje menüsünde Başvuru Ekle'ye tıklayın.
Başvuru Ekle iletişim kutusunda .NET sekmesine tıklayın, System.Data.Linq derlemesini seçin ve ardından Tamam'a tıklayın.
Bu derleme, DilLe Tümleşik Sorgular (LINQ) kullanmaya yönelik sınıflar içerir. Özel gruptaki denetimleri Northwind veritabanındaki verilerle doldurmak için LINQ kullanacaksınız.
Çözüm Gezgini'da CustomerRibbon.cs veya CustomerRibbon.vb'ye tıklayarak seçin.
Görünüm menüsünde Kod'a tıklayın.
Şerit kod dosyası Kod Düzenleyicisi'nde açılır.
Şerit kod dosyasının en üstüne aşağıdaki deyimleri ekleyin. Bu deyimler, LINQ ad alanlarına ve Outlook birincil birlikte çalışma derlemesinin (PIA) ad alanına kolay erişim sağlar.
Sınıfına aşağıdaki kodu
CustomerRibbon
ekleyin. Bu kod, Northwind veritabanının Müşteri, Siparişler, Sipariş Ayrıntıları ve Ürün tablolarından bilgileri depolamak için kullanacağınız veri tablosu ve tablo bağdaştırıcılarını bildirir.//Declare the Northwind dataset. Northwind40DataSet nwDataSet = new Northwind40DataSet(); //Declare the data tables. Northwind40DataSet.CustomersDataTable customerTable; Northwind40DataSet.OrdersDataTable orderTable; Northwind40DataSet.Order_DetailsDataTable orderDetailsTable; Northwind40DataSet.ProductsDataTable productsTable; //Declare the data table adapters for each table. CustomersTableAdapter customerTableAdapter = new CustomersTableAdapter(); OrdersTableAdapter ordersTableAdapter = new OrdersTableAdapter(); Order_DetailsTableAdapter detailsTableAdapter = new Order_DetailsTableAdapter(); ProductsTableAdapter productsTableAdapter = new ProductsTableAdapter();
Sınıfına aşağıdaki kod bloğunu
CustomerRibbon
ekleyin. Bu kod, çalışma zamanında şerit için denetimler oluşturan üç yardımcı yöntem ekler.private RibbonDropDownItem CreateRibbonDropDownItem() { return this.Factory.CreateRibbonDropDownItem(); } private RibbonMenu CreateRibbonMenu() { return this.Factory.CreateRibbonMenu(); } private RibbonButton CreateRibbonButton() { RibbonButton button = this.Factory.CreateRibbonButton(); button.Click += new RibbonControlEventHandler(button_Click); return button; }
CustomerRibbon_Load
Olay işleyici yöntemini aşağıdaki kodla değiştirin. Bu kod, aşağıdaki görevleri gerçekleştirmek için bir LINQ sorgusu kullanır:Northwind veritabanındaki 20 müşterinin kimliğini ve adını kullanarak Müşteriler birleşik giriş kutusunu doldurun.
PopulateSalesOrderInfo
Yardımcı yöntemini çağırır. Bu yöntem, ProductsPurchased menüsünü seçili durumdaki müşteriyle ilgili satış siparişi numaralarıyla güncelleştirir.private void CustomerRibbon_Load(object sender, RibbonUIEventArgs e) { customerTable = nwDataSet.Customers; customerTableAdapter.Fill(customerTable); var customerQuery = from customers in customerTable.AsEnumerable().Take(20) select new { CustomerID = customers.Field<string>("Customer ID"), CustomerName = customers.Field<string>("Contact Name") }; // Execute the query. foreach (var item in customerQuery) { this.comboBox1.Items.Add(CreateRibbonDropDownItem()); this.comboBox1.Items.Last().Label = item.CustomerName + "|" + item.CustomerID.ToString(); } this.comboBox1.Text = this.comboBox1.Items.First().Label; PopulateSalesOrderInfo(); }
Aşağıdaki kodu
CustomerRibbon
sınıfına ekleyin. Bu kod, aşağıdaki görevleri gerçekleştirmek için LINQ sorgularını kullanır:Seçili müşteriyle ilgili her satış siparişi için ProductsPurchased menüsüne bir alt menü ekler.
Satış siparişiyle ilgili ürünler için her alt menüye düğmeler ekler.
Her düğmeye olay işleyicileri ekler.
private void PopulateSalesOrderInfo() { String[] tempArray = comboBox1.Text.Split(new Char[] { '|' }); menu1.Items.Clear(); orderTable = nwDataSet.Orders; orderDetailsTable = nwDataSet.Order_Details; productsTable = nwDataSet.Products; ordersTableAdapter.Fill(orderTable); detailsTableAdapter.Fill(orderDetailsTable); productsTableAdapter.Fill(productsTable); var orderQuery = from orders in orderTable.AsEnumerable() where orders.Field<string>("Customer ID") == tempArray[1] select new { OrderID = orders.Field<int>("Order ID") }; foreach (var orderItem in orderQuery) { menu1.Items.Add(CreateRibbonMenu()); RibbonMenu orderMenu = (RibbonMenu)menu1.Items.Last(); orderMenu.Dynamic = true; orderMenu.Label = orderItem.OrderID.ToString(); orderMenu.Tag = orderItem.OrderID; var productQuery = from orderDetail in orderDetailsTable.AsEnumerable() join product in productsTable.AsEnumerable() on orderDetail.Field<int>("Product ID") equals product.Field<int>("Product ID") where orderDetail.Field<int>("Order ID") == orderItem.OrderID select new { ProductName = product.Field<string>("Product Name") }; foreach (var productItem in productQuery) { RibbonButton button = CreateRibbonButton(); button.Label = productItem.ProductName; orderMenu.Items.Add(button); } } }
Çözüm Gezgini şerit kod dosyasına çift tıklayın.
Şerit Tasarım Aracı açılır.
Şerit Tasarım Aracı Müşteriler birleşik giriş kutusuna çift tıklayın.
Şerit kod dosyası Kod Düzenleyicisi'nde açılır ve
ComboBox1_TextChanged
olay işleyicisi görüntülenir.Olay işleyicisini
ComboBox1_TextChanged
aşağıdaki kodla değiştirin. Bu kod aşağıdaki görevleri gerçekleştirir:PopulateSalesOrderInfo
Yardımcı yöntemini çağırır. Bu yöntem, Satın Alınan Ürünler menüsünü seçili müşteriyle ilişkili satış siparişleri ile güncelleştirir.PopulateMailItem
Yardımcı yöntemini çağırır ve seçili müşteri adı olan geçerli metni geçirir. Bu yöntem, yeni posta iletilerinin To, Subject ve Body alanlarını doldurur.
Sınıfına aşağıdaki
Click
olay işleyicisiniCustomerRibbon
ekleyin. Bu kod, seçilen ürünlerin adını yeni posta iletilerinin Gövde alanına ekler.void button_Click(object sender, RibbonControlEventArgs e) { Outlook.Application application = Globals.ThisAddIn.Application; Outlook.Inspector inspector = application.ActiveInspector(); Outlook.MailItem myMailItem = (Outlook.MailItem)inspector.CurrentItem; RibbonButton myCheckBox = (RibbonButton)sender; myMailItem.Subject = "Following up on your order"; myMailItem.Body = myMailItem.Body + "\n" + "* " + myCheckBox.Label; }
Aşağıdaki kodu
CustomerRibbon
sınıfına ekleyin. Bu kod aşağıdaki görevleri gerçekleştirir:Yeni posta iletilerinin Son satırını, seçili durumdaki müşterinin e-posta adresini kullanarak doldurur.
Yeni posta iletilerinin Konu ve Gövde alanlarına metin ekler.
private void PopulateMailItem(string addressToLine) { Outlook.Application application = Globals.ThisAddIn.Application; Outlook.Inspector inspector = application.ActiveInspector(); Outlook.MailItem myMailItem = (Outlook.MailItem)inspector.CurrentItem; myMailItem.To = ""; String[] tempArray = addressToLine.Split(new Char[] { '|' }); myMailItem.To = tempArray[0] + "@example.com"; myMailItem.Subject = "Following up on your order"; myMailItem.Body = "Hello " + tempArray[0] + "," + "\n" + "We would like to get your feedback on the " + "following products that you recently ordered: "; }
Özel gruptaki denetimleri test edin
Outlook'ta yeni bir posta formu açtığınızda, Şeridin İletiler sekmesinde Müşteri Satın Almaları adlı özel bir grup görüntülenir.
Müşteri izleme e-posta iletisi oluşturmak için bir müşteri seçin ve ardından müşteri tarafından satın alınan ürünleri seçin. Müşteri Satın Almaları grubundaki denetimler , Northwind veritabanındaki verilerle çalışma zamanında güncelleştirilir.
Özel gruptaki denetimleri test etmek için
Projenizi çalıştırmak için F5 tuşuna basın.
Outlook başlatılır.
Outlook'ta, Dosya menüsünde Yeni'nin üzerine gelin ve Posta İletisi'ne tıklayın.
Aşağıdaki eylemler meydana gelir:
Yeni bir posta iletisi Denetçisi penceresi görüntülenir.
Şeridin İleti sekmesinde, Müşteri Satın Almaları grubu Pano grubundan önce görünür.
Gruptaki Müşteriler birleşik giriş kutusu, Northwind veritabanındaki müşterilerin adlarıyla güncelleştirilir.
Şeridin İleti sekmesinin Müşteri Satın Almaları grubunda Müşteriler birleşik giriş kutusundan bir müşteri seçin.
Aşağıdaki eylemler meydana gelir:
Satın Alınan Ürünler menüsü, seçilen müşterinin her satış siparişini gösterecek şekilde güncelleştirilir.
Her satış siparişi alt menüsü, bu siparişte satın alınan ürünleri gösterecek şekilde güncelleştirilir.
Seçilen müşterinin e-posta adresi, posta iletisinin Son satırına eklenir ve posta iletisinin konusu ve gövdesi metinle doldurulur.
Ürün Satın Almaları menüsüne tıklayın, herhangi bir satış siparişinin üzerine gelin ve satış siparişinden bir ürüne tıklayın.
Ürün adı, posta iletisinin gövdesine eklenir.
Sonraki adımlar
Office kullanıcı arabirimini özelleştirme hakkında daha fazla bilgiyi şu konulardan öğrenebilirsiniz:
Herhangi bir belge düzeyi özelleştirmesine bağlam tabanlı kullanıcı arabirimi ekleyin. Daha fazla bilgi için bkz . Eylemler bölmesine genel bakış.
Standart veya özel bir Microsoft Office Outlook formunu genişletme. Daha fazla bilgi için bkz . İzlenecek yol: Outlook form bölgesi tasarlama.
Outlook'a özel görev bölmesi ekleyin. Daha fazla bilgi için bkz . Özel görev bölmeleri.
İlgili içerik
- Çalışma zamanında şeride erişme
- Şeride genel bakış
- Dil ile Tümleşik Sorgu (LINQ)
- Nasıl yapılır: Şeridi özelleştirmeye başlama
- Şerit Tasarımcısı
- İzlenecek yol: Şerit Tasarım Aracı kullanarak özel sekme oluşturma
- Şerit nesne modeline genel bakış
- Outlook için şeridi özelleştirme
- Nasıl yapılır: Şeritteki sekmenin konumunu değiştirme
- Nasıl yapılır: Yerleşik sekmeyi özelleştirme
- Nasıl yapılır: Backstage görünümüne denetim ekleme
- Nasıl yapılır: Şerit Tasarım Aracı Şerit XML'sine şerit dışarı aktarma
- Nasıl yapılır: Eklenti kullanıcı arabirimi hatalarını gösterme