İzlenecek yol: Outlook'ta e-posta iletileriyle özel görev bölmelerini görüntüleme

Bu kılavuzda, oluşturulan veya açılan her e-posta iletisiyle özel görev bölmesinin benzersiz bir örneğinin nasıl görüntüleneceği gösterilmektedir. Kullanıcılar, her e-posta iletisinin Şeridindeki bir düğmeyi kullanarak özel görev bölmesini görüntüleyebilir veya gizleyebilir.

Şunlar için geçerlidir: Bu konudaki bilgiler Outlook için VSTO Eklenti projeleri için geçerlidir. Daha fazla bilgi için bkz. Office uygulaması ve proje türüne göre kullanılabilen özellikler.

Birden çok Gezgin veya Denetçi penceresi olan bir özel görev bölmesini görüntülemek için, açılan her pencere için özel görev bölmesinin bir örneğini oluşturmanız gerekir. Outlook pencerelerindeki özel görev bölmelerinin davranışı hakkında daha fazla bilgi için bkz . Özel görev bölmeleri.

Not

Bu izlenecek yol, kodun arkasındaki mantığı tartışmayı kolaylaştırmak için VSTO Eklenti kodunu küçük bölümlerde sunar.

Bu izlenecek yol aşağıdaki görevleri gösterir:

  • Özel görev bölmesinin kullanıcı arabirimini (UI) tasarlama.

  • Özel şerit kullanıcı arabirimi oluşturma.

  • E-posta iletileriyle özel Şerit kullanıcı arabirimini görüntüleme.

  • Denetçi pencerelerini ve özel görev bölmelerini yönetmek için bir sınıf oluşturma.

  • VSTO Eklentisi tarafından kullanılan kaynakları başlatma ve temizleme.

  • Şerit iki durumlu düğmesini özel görev bölmesiyle eşitleme.

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 2013 veya Microsoft Outlook 2010.

Proje oluşturma

Özel görev bölmeleri VSTO Eklentileri'nde uygulanır. Outlook için bir VSTO Eklenti projesi oluşturarak başlayın.

Yeni proje oluşturmak için

  1. OutlookMailItemTaskPane adlı bir Outlook Eklenti projesi oluşturun. Outlook Eklentisi proje şablonunu kullanın. Daha fazla bilgi için bkz . Nasıl yapılır: Visual Studio'da Office projeleri oluşturma.

    Visual Studio ThisAddIn.cs veya ThisAddIn.vb kod dosyasını açar ve OutlookMailItemTaskPane projesiniÇözüm Gezgini ekler.

Özel görev bölmesinin kullanıcı arabirimini tasarlama

Özel görev bölmeleri için görsel tasarımcı yoktur, ancak istediğiniz kullanıcı arabirimiyle bir kullanıcı denetimi tasarlayabilirsiniz. Bu VSTO Eklentisindeki özel görev bölmesinde denetim içeren basit bir TextBox kullanıcı arabirimi vardır. Bu kılavuzun ilerleyen bölümlerinde kullanıcı denetimini özel görev bölmesine ekleyebilirsiniz.

Özel görev bölmesinin kullanıcı arabirimini tasarlamak için

  1. Çözüm Gezgini'da OutlookMailItemTaskPane projesine tıklayın.

  2. Proje menüsünde Kullanıcı Denetimi Ekle'ye tıklayın.

  3. Yeni Öğe Ekle iletişim kutusunda, kullanıcı denetiminin adını TaskPaneControl olarak değiştirin ve Ekle'ye tıklayın.

    Kullanıcı denetimi tasarımcıda açılır.

  4. Araç Kutusu'nun Ortak Denetimler sekmesinden textboxdenetimini kullanıcı denetimine sürükleyin.

Şeridin kullanıcı arabirimini tasarlama

Bu VSTO Eklentisinin hedeflerinden biri, kullanıcılara her e-posta iletisinin Şeridinden özel görev bölmesini gizleme veya görüntüleme yolu vermektir. Kullanıcı arabirimini sağlamak için, kullanıcıların özel görev bölmesini görüntülemek veya gizlemek için tıklayabileceği bir iki durumlu düğme görüntüleyen özel bir Şerit kullanıcı arabirimi oluşturun.

Özel şerit kullanıcı arabirimi oluşturmak 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ı ManageTaskPaneRibbon olarak değiştirin ve Ekle'ye tıklayın.

    ManageTaskPaneRibbon.cs veya ManageTaskPaneRibbon.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ı grup1'e tıklayın.

  5. Özellikler penceresinde Etiket özelliğini Görev Bölmesi Yöneticisi olarak ayarlayın.

  6. Araç Kutusu'nun Office Şerit Denetimleri sekmesinden, Bir ToggleButton denetimini Görev Bölmesi Yöneticisi grubuna sürükleyin.

  7. toggleButton1'e tıklayın.

  8. Özellikler penceresinde Label özelliğini Görev Bölmesini Göster olarak ayarlayın.

E-posta iletileriyle özel Şerit kullanıcı arabirimini görüntüleme

Bu kılavuzda oluşturduğunuz özel görev bölmesi, yalnızca e-posta iletileri içeren Denetçi pencerelerinde görünecek şekilde tasarlanmıştır. Bu nedenle, özellikleri yalnızca bu pencerelerle özel Şerit kullanıcı arabiriminizi görüntüleyecek şekilde ayarlayın.

Özel Şerit kullanıcı arabirimini e-posta iletileriyle görüntülemek için

  1. Şerit Tasarım Aracı YönetTaskPaneRibbon Şeridi'ne tıklayın.

  2. Özellikler penceresinde, RibbonType'ın yanındaki açılan listeye tıklayın ve Microsoft.Outlook.Mail.Compose ve Microsoft.Outlook.Mail.Read'u seçin.

Denetçi pencerelerini ve özel görev bölmelerini yönetmek için bir sınıf oluşturma

VSTO Eklentisinin belirli bir e-posta iletisiyle ilişkili özel görev bölmesini tanımlaması gereken birkaç durum vardır. Bu durumlar şunlardır:

  • Kullanıcı bir e-posta iletisini kapattığında. Bu durumda, VSTO Eklentisi tarafından kullanılan kaynakların doğru temizlendiğinden emin olmak için VSTO Eklentisinin ilgili özel görev bölmesini kaldırması gerekir.

  • Kullanıcı özel görev bölmesini kapattığında. Bu durumda, VSTO Eklentisinin e-posta iletisinin şeridindeki iki durumlu düğmenin durumunu güncelleştirmesi gerekir.

  • Kullanıcı şeritteki iki durumlu düğmeyi tıklattığında. Bu durumda, VSTO Eklentisi ilgili görev bölmesini gizlemeli veya görüntülemelidir.

    VSTO Eklentisi'nin her açık e-posta iletisiyle hangi özel görev bölmesinin ilişkilendirildiğini izlemesini sağlamak için, ve CustomTaskPane nesnelerinin Inspector çiftlerini sarmalayan özel bir sınıf oluşturun. Bu sınıf, her e-posta iletisi için yeni bir özel görev bölmesi nesnesi oluşturur ve ilgili e-posta iletisi kapatıldığında özel görev bölmesini siler.

Denetçi pencerelerini ve özel görev bölmelerini yönetmek üzere bir sınıf oluşturmak için

  1. Çözüm Gezgini ThisAddIn.cs veya ThisAddIn.vb dosyasına sağ tıklayın ve ardından Kodu Görüntüle'ye tıklayın.

  2. Dosyanın en üstüne aşağıdaki deyimleri ekleyin.

    using Microsoft.Office.Tools;
    
  3. Sınıfın dışındaki ThisAddIn ThisAddIn.cs veya ThisAddIn.vb dosyasına aşağıdaki kodu ekleyin (Visual C# için bu kodu OutlookMailItemTaskPane ad alanına ekleyin). InspectorWrapper sınıfı ve nesnelerinin bir çiftini InspectorCustomTaskPane yönetir. Aşağıdaki adımlarda bu sınıfın tanımını tamamlayacaksınız.

    public class InspectorWrapper
    {
        private Outlook.Inspector inspector;
        private CustomTaskPane taskPane;
    
  4. Önceki adımda eklediğiniz kodun arkasına aşağıdaki oluşturucuyu ekleyin. Bu oluşturucu, geçirilen nesneyle Inspector ilişkili yeni bir özel görev bölmesi oluşturur ve başlatır. C# dilinde oluşturucu ayrıca nesnenin Close olayına ve nesnenin Inspector olayına VisibleChanged olay CustomTaskPane işleyicileri ekler.

    public InspectorWrapper(Outlook.Inspector Inspector)
    {
        inspector = Inspector;
        ((Outlook.InspectorEvents_Event)inspector).Close +=
            new Outlook.InspectorEvents_CloseEventHandler(InspectorWrapper_Close);
        
        taskPane = Globals.ThisAddIn.CustomTaskPanes.Add(
            new TaskPaneControl(), "My task pane", inspector);
        taskPane.VisibleChanged += new EventHandler(TaskPane_VisibleChanged);
    }
    
  5. Önceki adımda eklediğiniz kodun arkasına aşağıdaki yöntemi ekleyin. Bu yöntem, sınıfında bulunan InspectorWrapper nesnenin CustomTaskPane olayı için VisibleChanged bir olay işleyicidir. Bu kod, kullanıcı özel görev bölmesini her açtığında veya kapatıldığında iki durumlu düğmenin durumunu güncelleştirir.

    void TaskPane_VisibleChanged(object sender, EventArgs e)
    {
        Globals.Ribbons[inspector].ManageTaskPaneRibbon.toggleButton1.Checked = 
            taskPane.Visible;
    }
    
  6. Önceki adımda eklediğiniz kodun arkasına aşağıdaki yöntemi ekleyin. Bu yöntem, geçerli e-posta iletisini içeren nesnenin Inspector olayı için Close bir olay işleyicisidir. Olay işleyicisi, e-posta iletisi kapatıldığında kaynakları serbest bırakır. Olay işleyicisi, geçerli özel görev bölmesini de koleksiyondan CustomTaskPanes kaldırır. Bu, bir sonraki e-posta iletisi açıldığında özel görev bölmesinin birden çok örneğini önlemeye yardımcı olur.

    void InspectorWrapper_Close()
    {
        if (taskPane != null)
        {
            Globals.ThisAddIn.CustomTaskPanes.Remove(taskPane);
        }
    
        taskPane = null;
        Globals.ThisAddIn.InspectorWrappers.Remove(inspector);
        ((Outlook.InspectorEvents_Event)inspector).Close -=
            new Outlook.InspectorEvents_CloseEventHandler(InspectorWrapper_Close);
        inspector = null;
    }
    
  7. Önceki adımda eklediğiniz kodun arkasına aşağıdaki kodu ekleyin. Bu kılavuzun ilerleyen bölümlerinde, özel görev bölmesini görüntülemek veya gizlemek için bu özelliği özel Şerit kullanıcı arabirimindeki bir yöntemden çağıracaksınız.

        public CustomTaskPane CustomTaskPane
        {
            get
            {
                return taskPane;
            }
        }
    }
    

Eklenti tarafından kullanılan kaynakları başlatma ve temizleme

Yüklendiğinde VSTO Eklentisini başlatmak ve kaldırıldığında VSTO Eklentisi tarafından kullanılan kaynakları temizlemek için sınıfına kod ThisAddIn ekleyin. VSTO Eklentisini başlatmak için olay için NewInspector bir olay işleyicisi ayarlayın ve var olan tüm e-posta iletilerini bu olay işleyicisine geçirin. VSTO Eklentisi kaldırıldığında, olay işleyicisini ayırıp VSTO Eklentisi tarafından kullanılan nesneleri temizleyin.

VSTO Eklentisi tarafından kullanılan kaynakları başlatmak ve temizlemek için

  1. ThisAddIn.cs veya ThisAddIn.vb dosyasında sınıfın ThisAddIn tanımını bulun.

  2. Sınıfına aşağıdaki bildirimleri ThisAddIn ekleyin:

    • alanı, inspectorWrappersValue VSTO Eklentisi tarafından yönetilen tüm Inspector ve InspectorWrapper nesnelerini içerir.

    • alanı, inspectors geçerli Outlook örneğindeki Denetçi pencerelerinin koleksiyonuna bir başvuru tutar. Bu başvuru, atık toplayıcının olay için NewInspector olay işleyicisini içeren belleği boşaltmasını önler. Bu, sonraki adımda bildirecektir.

      private Dictionary<Outlook.Inspector, InspectorWrapper> inspectorWrappersValue =
          new Dictionary<Outlook.Inspector, InspectorWrapper>();
      private Outlook.Inspectors inspectors;
      

  3. ThisAddIn_Startup yöntemini aşağıdaki kodla değiştirin. Bu kod olaya bir olay işleyicisi NewInspector ekler ve var olan Inspector her nesneyi olay işleyicisine geçirir. Outlook zaten çalıştırıldıktan sonra kullanıcı VSTO Eklentisini yüklerse, VSTO Eklentisi zaten açık olan tüm e-posta iletileri için özel görev bölmeleri oluşturmak üzere bu bilgileri kullanır.

    private void ThisAddIn_Startup(object sender, System.EventArgs e)
    {
        inspectors = this.Application.Inspectors;
        inspectors.NewInspector +=
            new Outlook.InspectorsEvents_NewInspectorEventHandler(
            Inspectors_NewInspector);
    
        foreach (Outlook.Inspector inspector in inspectors)
        {
            Inspectors_NewInspector(inspector);
        }
    }
    
  4. ThisAddIn_ShutDown yöntemini aşağıdaki kodla değiştirin. Bu kod, olay işleyicisini NewInspector ayırır ve VSTO Eklentisi tarafından kullanılan nesneleri temizler.

    private void ThisAddIn_Shutdown(object sender, System.EventArgs e)
    {
        inspectors.NewInspector -=
            new Outlook.InspectorsEvents_NewInspectorEventHandler(
            Inspectors_NewInspector);
        inspectors = null;
        inspectorWrappersValue = null;
    }
    
  5. Sınıfına aşağıdaki NewInspector olay işleyicisini ThisAddIn ekleyin. Yeni Inspector bir e-posta iletisi içeriyorsa, yöntem e-posta iletisiyle ilgili görev bölmesi arasındaki ilişkiyi yönetmek için yeni InspectorWrapper bir nesne örneği oluşturur.

    void Inspectors_NewInspector(Outlook.Inspector Inspector)
    {
        if (Inspector.CurrentItem is Outlook.MailItem)
        {
            inspectorWrappersValue.Add(Inspector, new InspectorWrapper(Inspector));
        }
    }
    
  6. Sınıfına aşağıdaki özelliği ThisAddIn ekleyin. Bu özellik özel inspectorWrappersValue alanı sınıfın dışında ThisAddIn kod olarak kullanıma sunar.

    public Dictionary<Outlook.Inspector, InspectorWrapper> InspectorWrappers
    {
        get
        {
            return inspectorWrappersValue;
        }
    }
    

Checkpoint

Hata olmadan derlendiğinden emin olmak için projenizi derleyin.

Projenizi oluşturmak için

  1. Çözüm Gezgini'da OutlookMailItemTaskPane projesine sağ tıklayın ve ardından Oluştur'a tıklayın. Projenin hatasız derlendiğini doğrulayın.

Şerit iki durumlu düğmesini özel görev bölmesiyle eşitleme

Görev bölmesi görünür durumdayken iki durumlu düğme basılmış gibi görünür ve görev bölmesi gizlendiğinde düğmeye basılmıyor gibi görünür. Düğmenin durumunu özel görev bölmesiyle eşitlemek için iki durumlu düğmenin olay işleyicisini değiştirin Click .

Özel görev bölmesini iki durumlu düğmeyle eşitlemek için

  1. Şerit Tasarım Aracı Görev Bölmesini Göster iki durumlu düğmesini çift tıklatın.

    Visual Studio, iki durumlu düğme olayını işleyen Click adlı toggleButton1_Clickbir olay işleyicisini otomatik olarak oluşturur. Visual Studio ayrıca ManageTaskPaneRibbon.cs veya ManageTaskPaneRibbon.vb dosyasını Kod Düzenleyicisi'nde açar.

  2. ManageTaskPaneRibbon.cs veya ManageTaskPaneRibbon.vb dosyasının en üstüne aşağıdaki deyimleri ekleyin.

    using Outlook = Microsoft.Office.Interop.Outlook;
    using Microsoft.Office.Tools;
    
  3. Olay işleyicisini toggleButton1_Click aşağıdaki kodla değiştirin. Kullanıcı iki durumlu düğmeyi tıklattığında, bu yöntem geçerli Denetçi penceresiyle ilişkili özel görev bölmesini gizler veya görüntüler.

    private void toggleButton1_Click(object sender, RibbonControlEventArgs e)
    {
        Outlook.Inspector inspector = (Outlook.Inspector)e.Control.Context;
        InspectorWrapper inspectorWrapper = Globals.ThisAddIn.InspectorWrappers[inspector];
        CustomTaskPane taskPane = inspectorWrapper.CustomTaskPane;
        if (taskPane != null)
        {
            taskPane.Visible = ((RibbonToggleButton)sender).Checked;
        }
    }
    

Projeyi test etme

Projede hata ayıklamaya başladığınızda, Outlook açılır ve VSTO Eklentisi yüklenir. VSTO Eklentisi, açılan her e-posta iletisiyle birlikte özel görev bölmesinin benzersiz bir örneğini görüntüler. Kodu test etmek için birkaç yeni e-posta iletisi oluşturun.

VSTO Eklentisini test etmek için

  1. F5 tuşuna basın.

  2. Outlook'ta Yeni'ye tıklayarak yeni bir e-posta iletisi oluşturun.

  3. E-posta iletisinin şeridinde Eklentiler sekmesine ve ardından Görev Bölmesini Göster düğmesine tıklayın.

    Görev bölmem başlığına sahip bir görev bölmesinin e-posta iletisiyle birlikte görüntülendiğini doğrulayın.

  4. Görev bölmesinde, metin kutusuna İlk görev bölmesi yazın.

  5. Görev bölmesini kapatın.

    Görev Bölmesini Göster düğmesinin durumunun artık basılamaz şekilde değiştiğini doğrulayın.

  6. Görev Bölmesini Göster düğmesine yeniden tıklayın.

    Görev bölmesinin açıldığını ve metin kutusunun hala İlk görev bölmesi dizesini içerdiğini doğrulayın.

  7. Outlook'ta, ikinci bir e-posta iletisi oluşturmak için Yeni'ye tıklayın.

  8. E-posta iletisinin şeridinde Eklentiler sekmesine ve ardından Görev Bölmesini Göster düğmesine tıklayın.

    Görev bölmem başlığına sahip bir görev bölmesinin e-posta iletisiyle görüntülendiğini ve bu görev bölmesindeki metin kutusunun boş olduğunu doğrulayın.

  9. Görev bölmesinde, metin kutusuna İkinci görev bölmesi yazın.

  10. Odağı ilk e-posta iletisine değiştirin.

    Bu e-posta iletisiyle ilişkili görev bölmesinin metin kutusunda İlk görev bölmesini görüntülemeye devam ettiğini doğrulayın.

    Bu VSTO Eklentisi, deneyebileceğiniz daha gelişmiş senaryoları da işler. Örneğin, Sonraki Öğe ve Önceki Öğe düğmelerini kullanarak e-postaları görüntülerken davranışı test edebilirsiniz. Ayrıca VSTO Eklentisini kaldırdığınızda, birkaç e-posta iletisi açtığınızda ve ardından VSTO Eklentisini yeniden yüklerken davranışı test edebilirsiniz.

Sonraki adımlar

Şu konulardan özel görev bölmeleri oluşturma hakkında daha fazla bilgi edinebilirsiniz:

  • Farklı bir uygulama için VSTO Eklentisi'nde özel görev bölmesi oluşturun. Özel görev bölmelerini destekleyen uygulamalar hakkında daha fazla bilgi için bkz . Özel görev bölmeleri.

  • Özel görev bölmesi kullanarak Microsoft Office uygulaması'ni otomatikleştirme. Daha fazla bilgi için bkz . İzlenecek yol: Özel görev bölmesinden bir uygulamayı otomatikleştirme.

  • Excel'de özel görev bölmesini gizlemek veya görüntülemek için kullanılabilecek bir Şerit düğmesi oluşturun. Daha fazla bilgi için bkz . İzlenecek yol: Şerit düğmesiyle özel görev bölmesini eşitleme.