Aracılığıyla paylaş


İ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

  1. Visual Studio'da, Ribbon_Update_At_Runtime adlı bir Outlook VSTO Eklenti projesi oluşturun.

  2. Yeni Proje iletişim kutusunda Çözüm için dizin oluştur'u seçin.

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

  1. Proje menüsünde Yeni Öğe Ekle'ye tıklayın.

  2. Yeni Öğe Ekle iletişim kutusunda Şerit (Görsel Tasarım Aracı) öğesini seçin.

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

  4. Şerit Tasarım Aracı tıklayarak seçin.

  5. Ö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.

  6. Şerit Tasarım Aracı, seçmek için Grup1'e tıklayın.

  7. Özellikler penceresinde Etiket'i Müşteri Satın Almaları olarak ayarlayın.

  8. Araç Kutusu'nun Office Şerit Denetimleri sekmesinden Bir ComboBox'ı Müşteri Satın Almaları grubuna sürükleyin.

  9. ComboBox1'e tıklayarak seçin.

  10. Özellikler penceresinde Etiket'i Müşteriler olarak ayarlayın.

  11. Araç Kutusu'nun Office Şerit Denetimleri sekmesinden Menü'yü Müşteri Satın Almaları grubuna sürükleyin.

  12. Özellikler penceresinde Etiket'i Satın Alınan Ürün olarak ayarlayın.

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

  1. Seçmek için SekmeAddins (Yerleşik) sekmesine tıklayın.

  2. Ö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.

  3. Seçmek için Müşteri Satın Almaları grubuna tıklayın.

  4. Ö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.

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

  1. Veri menüsünde Yeni Veri Kaynağı Ekle'ye tıklayın.

    Bu, Veri Kaynağı Yapılandırma Sihirbazı'nı başlatır.

  2. Veritabanı'yı seçin ve İleri'ye tıklayın.

  3. Veri kümesi'ne tıklayın ve ardından İleri'ye tıklayın.

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

  5. Bir bağlantı seçildikten veya oluşturulduktan sonra İleri'ye tıklayın.

  6. bağlantı dizesi kaydetmek için İleri'ye tıklayın.

  7. Veritabanı Nesnelerinizi Seçin sayfasında Tablolar'ı genişletin.

  8. Aşağıdaki tabloların her birinin yanındaki onay kutusunu seçin:

    1. Müşteriler

    2. Sipariş Ayrıntıları

    3. Siparişler

    4. Ürünler

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

  1. Proje menüsünde Başvuru Ekle'ye tıklayın.

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

  3. Çözüm Gezgini'da CustomerRibbon.cs veya CustomerRibbon.vb'ye tıklayarak seçin.

  4. Görünüm menüsünde Kod'a tıklayın.

    Şerit kod dosyası Kod Düzenleyicisi'nde açılır.

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

    using System.Data.Linq;
    using System.Data.Linq.Mapping;
    using System.Linq.Expressions;
    using Outlook = Microsoft.Office.Interop.Outlook;
    using System.Data;
    using System.IO;
    using Ribbon_Update_At_Runtime.Northwind40DataSetTableAdapters;
    
  6. 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();
    
  7. 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;
    }
    
  8. 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();
      }
      

  9. 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);
              }
          }
      }
      

  10. Çözüm Gezgini şerit kod dosyasına çift tıklayın.

    Şerit Tasarım Aracı açılır.

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

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

      private void comboBox1_TextChanged(object sender,
          RibbonControlEventArgs e)
      {
          PopulateSalesOrderInfo();
          PopulateMailItem(comboBox1.Text);
      }
      

  13. Sınıfına aşağıdaki Click olay işleyicisini CustomerRibbon 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;
    }
    
  14. 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

  1. Projenizi çalıştırmak için F5 tuşuna basın.

    Outlook başlatılır.

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

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

  4. Ü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: