Udostępnij za pośrednictwem


Przewodnik: wyświetlanie niestandardowych okienek zadań z wiadomościami e-mail w programie Outlook

W tym przewodniku pokazano, jak wyświetlić unikatowe wystąpienie niestandardowego okienka zadań z każdą utworzoną lub otwartą wiadomością e-mail. Użytkownicy mogą wyświetlać lub ukrywać niestandardowe okienko zadań przy użyciu przycisku na wstążce każdej wiadomości e-mail.

Dotyczy: informacje w tym temacie dotyczą projektów dodatków VSTO dla programu Outlook. Aby uzyskać więcej informacji, zobacz Funkcje dostępne przez aplikacja pakietu Office lication i typ projektu.

Aby wyświetlić niestandardowe okienko zadań z wieloma oknami Eksploratora lub Inspektora, należy utworzyć wystąpienie niestandardowego okienka zadań dla każdego otwartego okna. Aby uzyskać więcej informacji na temat zachowania niestandardowych okien zadań w oknach programu Outlook, zobacz Niestandardowe okienka zadań.

Uwaga

Ten przewodnik przedstawia kod dodatku VSTO w małych sekcjach, aby ułatwić omówienie logiki kodu.

W instruktażu przedstawiono następujące zagadnienia:

  • Projektowanie interfejsu użytkownika w niestandardowym okienku zadań.

  • Tworzenie niestandardowego interfejsu użytkownika wstążki.

  • Wyświetlanie niestandardowego interfejsu użytkownika wstążki z wiadomościami e-mail.

  • Tworzenie klasy do zarządzania oknami Inspector i niestandardowymi okienkami zadań.

  • Inicjowanie i czyszczenie zasobów używanych przez dodatek VSTO.

  • Synchronizowanie przycisku przełączania wstążki za pomocą niestandardowego okienka zadań.

Uwaga

Na komputerze w poniższych instrukcjach mogą być wyświetlane inne nazwy i lokalizacje niektórych elementów interfejsu użytkownika programu Visual Studio. Te elementy są określane przez numer wersji Visual Studio oraz twoje ustawienia. Aby uzyskać więcej informacji, zobacz Personalizowanie środowiska IDE programu Visual Studio.

Wymagania wstępne

Następujące składniki są wymagane do przeprowadzenia tego instruktażu:

  • Edycja programu Visual Studio, która oferuje narzędzia deweloperskie pakietu Microsoft Office. Aby uzyskać więcej informacji, zobacz Konfigurowanie komputera do tworzenia rozwiązań pakietu Office.

  • Microsoft Outlook 2013 lub Microsoft Outlook 2010.

Tworzenie projektu

Niestandardowe okienka zadań są implementowane w dodatku VSTO. Zacznij od utworzenia projektu dodatku VSTO dla programu Outlook.

Aby utworzyć nowy projekt

  1. Utwórz projekt dodatku programu Outlook o nazwie OutlookMailItemTaskPane. Użyj szablonu projektu dodatku programu Outlook. Aby uzyskać więcej informacji, zobacz How to: Create Office projects in Visual Studio (Jak tworzyć projekty pakietu Office w programie Visual Studio).

    Program Visual Studio otwiera plik kodu ThisAddIn.cs lub ThisAddIn.vb i dodaje projekt OutlookMailItemTaskPane do Eksplorator rozwiązań.

Projektowanie interfejsu użytkownika w niestandardowym okienku zadań

Nie ma projektanta wizualnego dla niestandardowych okienek zadań, ale możesz zaprojektować kontrolkę użytkownika przy użyciu żądanego interfejsu użytkownika. Niestandardowe okienko zadań w tym dodatku VSTO ma prosty interfejs użytkownika, który zawiera kontrolkę TextBox . W dalszej części tego przewodnika dodasz kontrolkę użytkownika do niestandardowego okienka zadań.

Aby zaprojektować interfejs użytkownika niestandardowego okienka zadań

  1. W Eksplorator rozwiązań kliknij projekt OutlookMailItemTaskPane.

  2. W menu Project (Projekt) kliknij pozycję Add User Control (Dodaj kontrolkę użytkownika).

  3. W oknie dialogowym Dodawanie nowego elementu zmień nazwę kontrolki użytkownika na TaskPaneControl, a następnie kliknij przycisk Dodaj.

    Kontrolka użytkownika zostanie otwarta w projektancie.

  4. Na karcie Wspólne kontrolki przybornika przeciągnij kontrolkę TextBox do kontrolki użytkownika.

Projektowanie interfejsu użytkownika na wstążce

Jednym z celów tego dodatku VSTO jest zapewnienie użytkownikom możliwości ukrycia lub wyświetlenia niestandardowego okienka zadań ze wstążki każdej wiadomości e-mail. Aby udostępnić interfejs użytkownika, utwórz niestandardowy interfejs użytkownika wstążki, który wyświetla przycisk przełącznika, który użytkownicy mogą kliknąć, aby wyświetlić lub ukryć niestandardowe okienko zadań.

Aby utworzyć niestandardowy interfejs użytkownika wstążki

  1. W menu Project (Projekt) kliknij pozycję Add New Item (Dodaj nowy element).

  2. W oknie dialogowym Dodawanie nowego elementu wybierz pozycję Wstążka (Visual Projektant).

  3. Zmień nazwę nowej wstążki na ManageTaskPaneRibbon, a następnie kliknij przycisk Dodaj.

    Plik ManageTaskPaneRibbon.cs lub ManageTaskPaneRibbon.vb zostanie otwarty w Projektant wstążki i wyświetli domyślną kartę i grupę.

  4. Na Projektant wstążki kliknij pozycję group1.

  5. W oknie Właściwości ustaw właściwość Etykieta na Menedżer okienka zadań.

  6. Na karcie Kontrolki wstążki pakietu Office przybornika przeciągnij kontrolkę ToggleButton do grupy Menedżer okienka zadań.

  7. Kliknij przycisk przełącznikButton1.

  8. W oknie Właściwości ustaw właściwość Etykieta na Pokaż okienko zadań.

Wyświetlanie niestandardowego interfejsu użytkownika wstążki z wiadomościami e-mail

Niestandardowe okienko zadań utworzone w tym przewodniku zostało zaprojektowane tak, aby było wyświetlane tylko w oknach Inspector (Inspektor), które zawierają wiadomości e-mail. W związku z tym ustaw właściwości, aby wyświetlić niestandardowy interfejs użytkownika wstążki tylko w tych oknach.

Aby wyświetlić niestandardowy interfejs użytkownika wstążki z wiadomościami e-mail

  1. Na wstążce Projektant kliknij wstążkę ManageTaskPaneRibbon.

  2. W oknie Właściwości kliknij listę rozwijaną obok pozycji RibbonType, a następnie wybierz pozycję Microsoft.Outlook.Mail.Compose i Microsoft.Outlook.Mail.Read.

Tworzenie klasy do zarządzania oknami inspektora i niestandardowymi okienkami zadań

Istnieje kilka przypadków, w których dodatek VSTO musi zidentyfikować, które niestandardowe okienko zadań jest skojarzone z określoną wiadomością e-mail. Te przypadki obejmują następujące elementy:

  • Gdy użytkownik zamknie wiadomość e-mail. W takim przypadku dodatek VSTO musi usunąć odpowiednie niestandardowe okienko zadań, aby upewnić się, że zasoby używane przez dodatek VSTO są prawidłowo czyszczone.

  • Gdy użytkownik zamknie niestandardowe okienko zadań. W takim przypadku dodatek VSTO musi zaktualizować stan przycisku przełącznika na wstążce wiadomości e-mail.

  • Gdy użytkownik kliknie przycisk przełącznika na wstążce. W takim przypadku dodatek VSTO musi ukrywać lub wyświetlać odpowiednie okienko zadań.

    Aby włączyć dodatek VSTO, aby śledzić, które niestandardowe okienko zadań jest skojarzone z każdą otwartą wiadomością e-mail, utwórz klasę niestandardową, która opakowuje pary Inspector obiektów i CustomTaskPane . Ta klasa tworzy nowy niestandardowy obiekt okienka zadań dla każdej wiadomości e-mail i usuwa niestandardowe okienko zadań po zamknięciu odpowiedniej wiadomości e-mail.

Aby utworzyć klasę do zarządzania oknami inspektora i niestandardowymi okienkami zadań

  1. W Eksplorator rozwiązań kliknij prawym przyciskiem myszy plik ThisAddIn.cs lub ThisAddIn.vb, a następnie kliknij polecenie Wyświetl kod.

  2. Dodaj poniższe instrukcje na początku pliku.

    using Microsoft.Office.Tools;
    
  3. Dodaj następujący kod do pliku ThisAddIn.cs lub ThisAddIn.vb poza klasą ThisAddIn (dla języka Visual C#dodaj ten kod wewnątrz OutlookMailItemTaskPane przestrzeni nazw). Klasa InspectorWrapper zarządza parą Inspector obiektów i CustomTaskPane . W poniższych krokach ukończysz definicję tej klasy.

    public class InspectorWrapper
    {
        private Outlook.Inspector inspector;
        private CustomTaskPane taskPane;
    
  4. Dodaj następujący konstruktor po kodzie dodanym w poprzednim kroku. Ten konstruktor tworzy i inicjuje nowe niestandardowe okienko zadań skojarzone z przekazanym obiektem Inspector . W języku C# konstruktor dołącza również programy obsługi zdarzeń do Close zdarzenia Inspector obiektu i VisibleChanged zdarzenia CustomTaskPane obiektu.

    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. Dodaj następującą metodę po kodzie dodanym w poprzednim kroku. Ta metoda jest procedurą obsługi zdarzeń dla VisibleChanged zdarzenia CustomTaskPane obiektu, który znajduje się w InspectorWrapper klasie. Ten kod aktualizuje stan przycisku przełącznika za każdym razem, gdy użytkownik otworzy lub zamknie niestandardowe okienko zadań.

    void TaskPane_VisibleChanged(object sender, EventArgs e)
    {
        Globals.Ribbons[inspector].ManageTaskPaneRibbon.toggleButton1.Checked = 
            taskPane.Visible;
    }
    
  6. Dodaj następującą metodę po kodzie dodanym w poprzednim kroku. Ta metoda jest procedurą obsługi zdarzeń dla Close zdarzenia obiektu zawierającego Inspector bieżącą wiadomość e-mail. Procedura obsługi zdarzeń zwalnia zasoby po zamknięciu wiadomości e-mail. Program obsługi zdarzeń usuwa również bieżące niestandardowe okienko zadań z kolekcji CustomTaskPanes . Pomaga to zapobiec wielu wystąpieniom niestandardowego okienka zadań po otwarciu następnej wiadomości e-mail.

    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. Dodaj następujący kod po kodzie dodanym w poprzednim kroku. W dalszej części tego przewodnika wywołasz tę właściwość z metody w niestandardowym interfejsie użytkownika wstążki, aby wyświetlić lub ukryć niestandardowe okienko zadań.

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

Inicjowanie i czyszczenie zasobów używanych przez dodatek

Dodaj kod do klasy, ThisAddIn aby zainicjować dodatek VSTO podczas ładowania i wyczyścić zasoby używane przez dodatek VSTO podczas jego zwolnienia. Zainicjuj dodatek VSTO, konfigurując program obsługi zdarzeń dla NewInspector zdarzenia i przekazując wszystkie istniejące wiadomości e-mail do tej procedury obsługi zdarzeń. Gdy dodatek VSTO zostanie zwolniony, odłącz program obsługi zdarzeń i wyczyść obiekty używane przez dodatek VSTO.

Aby zainicjować i wyczyścić zasoby używane przez dodatek VSTO

  1. W pliku ThisAddIn.cs lub ThisAddIn.vb znajdź definicję ThisAddIn klasy.

  2. Dodaj następujące deklaracje do ThisAddIn klasy:

    • Pole inspectorWrappersValue zawiera wszystkie Inspector obiekty i InspectorWrapper zarządzane przez dodatek VSTO.

    • Pole inspectors utrzymuje odwołanie do kolekcji okien Inspector w bieżącym wystąpieniu programu Outlook. To odwołanie uniemożliwia modułowi odśmiecania pamięci, który zawiera program obsługi zdarzeń dla NewInspector zdarzenia, który zostanie zadeklarowany w następnym kroku.

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

  3. Zastąp metodę ThisAddIn_Startup następującym kodem. Ten kod dołącza procedurę obsługi zdarzeń do NewInspector zdarzenia i przekazuje każdy istniejący Inspector obiekt do programu obsługi zdarzeń. Jeśli użytkownik ładuje dodatek VSTO po uruchomieniu programu Outlook, dodatek VSTO używa tych informacji do tworzenia niestandardowych okienek zadań dla wszystkich otwartych wiadomości e-mail.

    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. Zastąp metodę ThisAddIn_ShutDown następującym kodem. Ten kod odłącza NewInspector program obsługi zdarzeń i czyści obiekty używane przez dodatek VSTO.

    private void ThisAddIn_Shutdown(object sender, System.EventArgs e)
    {
        inspectors.NewInspector -=
            new Outlook.InspectorsEvents_NewInspectorEventHandler(
            Inspectors_NewInspector);
        inspectors = null;
        inspectorWrappersValue = null;
    }
    
  5. Dodaj następującą NewInspector procedurę ThisAddIn obsługi zdarzeń do klasy . Jeśli nowy Inspector komunikat zawiera wiadomość e-mail, metoda tworzy wystąpienie nowego InspectorWrapper obiektu w celu zarządzania relacją między wiadomością e-mail a odpowiednim okienkiem zadań.

    void Inspectors_NewInspector(Outlook.Inspector Inspector)
    {
        if (Inspector.CurrentItem is Outlook.MailItem)
        {
            inspectorWrappersValue.Add(Inspector, new InspectorWrapper(Inspector));
        }
    }
    
  6. Dodaj następującą właściwość do ThisAddIn klasy. Ta właściwość uwidacznia pole prywatne inspectorWrappersValue kodowi poza klasą ThisAddIn .

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

Punkt kontrolny

Skompiluj projekt, aby upewnić się, że kompiluje się bez błędów.

Aby skompilować projekt

  1. W Eksplorator rozwiązań kliknij prawym przyciskiem myszy projekt OutlookMailItemTaskPane, a następnie kliknij polecenie Kompiluj. Sprawdź, czy projekt kompiluje się bez błędów.

Synchronizowanie przycisku przełączania wstążki z niestandardowym okienkiem zadań

Gdy okienko zadań jest widoczne, przycisk przełącznika będzie widoczny, a gdy okienko zadań zostanie ukryte, nie zostanie naciśnięty. Aby zsynchronizować stan przycisku z niestandardowym okienkiem zadań, zmodyfikuj Click procedurę obsługi zdarzeń przycisku przełącznika.

Aby zsynchronizować niestandardowe okienko zadań z przyciskiem przełącznika

  1. Na Projektant wstążki kliknij dwukrotnie przycisk Pokaż okienko zadań.

    Program Visual Studio automatycznie generuje program obsługi zdarzeń o nazwie toggleButton1_Click, który obsługuje Click zdarzenie przycisku przełącznika. Program Visual Studio otwiera również plik ManageTaskPaneRibbon.cs lub ManageTaskPaneRibbon.vb w Edytorze kodu.

  2. Dodaj następujące instrukcje na początku pliku ManageTaskPaneRibbon.cs lub ManageTaskPaneRibbon.vb .

    using Outlook = Microsoft.Office.Interop.Outlook;
    using Microsoft.Office.Tools;
    
  3. Zastąp toggleButton1_Click program obsługi zdarzeń następującym kodem. Gdy użytkownik kliknie przycisk przełącznika, ta metoda ukrywa lub wyświetla niestandardowe okienko zadań skojarzone z bieżącym oknem Inspektor.

    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;
        }
    }
    

Testowanie projektu

Po rozpoczęciu debugowania projektu zostanie otwarty program Outlook, a dodatek VSTO zostanie załadowany. Dodatek VSTO wyświetla unikatowe wystąpienie niestandardowego okienka zadań z każdą otwartą wiadomością e-mail. Utwórz kilka nowych wiadomości e-mail, aby przetestować kod.

Aby przetestować dodatek VSTO

  1. Naciśnij klawisz F5.

  2. W programie Outlook kliknij pozycję Nowy , aby utworzyć nową wiadomość e-mail.

  3. Na wstążce wiadomości e-mail kliknij kartę Dodatki, a następnie kliknij przycisk Pokaż okienko zadań.

    Sprawdź, czy okienko zadań z tytułem Moje zadanie jest wyświetlane z wiadomością e-mail.

  4. W okienku zadań wpisz Pierwsze okienko zadań w polu tekstowym.

  5. Zamknij okienko Zadanie.

    Sprawdź, czy stan przycisku Pokaż okienko zadań zmienia się tak, aby nie był już naciśnięty.

  6. Kliknij ponownie przycisk Pokaż okienko zadań.

    Sprawdź, czy zostanie otwarte okienko zadań i czy pole tekstowe nadal zawiera ciąg Pierwszy okienko zadań.

  7. W programie Outlook kliknij pozycję Nowy , aby utworzyć drugą wiadomość e-mail.

  8. Na wstążce wiadomości e-mail kliknij kartę Dodatki, a następnie kliknij przycisk Pokaż okienko zadań.

    Sprawdź, czy okienko zadań z tytułem Moje okienko zadań jest wyświetlane z wiadomością e-mail, a pole tekstowe w tym okienku zadań jest puste.

  9. W okienku zadań wpisz Drugie okienko zadań w polu tekstowym.

  10. Zmień fokus na pierwszą wiadomość e-mail.

    Sprawdź, czy okienko zadań skojarzone z tą wiadomością e-mail nadal wyświetla okienko Pierwszego zadania w polu tekstowym.

    Ten dodatek VSTO obsługuje również bardziej zaawansowane scenariusze, które można wypróbować. Można na przykład przetestować zachowanie podczas wyświetlania wiadomości e-mail przy użyciu przycisków Następny element i Poprzedni element . Możesz również przetestować zachowanie podczas zwalniania dodatku VSTO, otwierania kilku wiadomości e-mail, a następnie ponownego ładowania dodatku VSTO.

Następne kroki

Więcej informacji na temat tworzenia niestandardowych okienek zadań można znaleźć w następujących tematach: