Поделиться через


Получение и перечисление выбранных бесед

В этом примере показано, как получить и перечислить выбранные беседы с помощью метода GetSelection(OlSelectionContents).

Пример

Microsoft Outlook можно настроить так, чтобы элементы в папке "Входящие" отображались по беседам. Если пользователь выбирает элемент в папке "Входящие", можно получить этот выбор программным образом, включая заголовки и элементы бесед. В примере кода в данном разделе показывается, как получить выбранный в папке "Входящие" элемент и как перечислить почтовые элементы для каждой из выбранных бесед.

Этот пример содержит один метод, DemoConversationHeadersFromSelection. Этот метод задает в качестве текущего представления папку "Входящие", а затем проверяет, является ли текущее представление табличным представлением, отображающим беседы, отсортированные по датам. Чтобы получить выбранные элементы, включая все выбранные объекты ConversationHeader, метод DemoConversationHeadersFromSelection использует метод GetSelection объекта Selection, задавая в качестве аргумента константу olConversationHeaders. Если выбраны заголовки бесед, метод DemoConversationHeadersFromSelection использует объект SimpleItems для перечисления элементов в каждой выбранной беседе, а затем выводит темы элементов беседы, являющихся объектами MailItem.

Если вы используете Visual Studio для тестирования этого примера кода, сначала добавьте ссылку на компонент Microsoft Outlook 15.0 Object Library и задайте переменную Outlook при импорте пространства имен Microsoft.Office.Interop.Outlook. Инструкция using не должна находиться непосредственно перед функциями в примере кода, но ее нужно добавить перед объявлением общедоступного класса. В следующей строке кода показано, как выполнить импорт и назначение в C#.

using Outlook = Microsoft.Office.Interop.Outlook;
private void DemoConversationHeadersFromSelection()
{
    // Obtain Inbox.
    Outlook.Folder inbox =
        Application.Session.GetDefaultFolder(
        Outlook.OlDefaultFolders.olFolderInbox)
        as Outlook.Folder;
    // Set ActiveExplorer.CurrentFolder to Inbox.
    // Inbox must be current folder.
    Application.ActiveExplorer().CurrentFolder = inbox;
    // Ensure that current view is TableView.
    if (inbox.CurrentView.ViewType ==
        Outlook.OlViewType.olTableView)
    {
        Outlook.TableView view =
            inbox.CurrentView as Outlook.TableView;
        if (view.ShowConversationByDate == true)
        {
            Outlook.Selection selection =
                Application.ActiveExplorer().Selection;
            Debug.WriteLine("Selection.Count = " + selection.Count);
            // Call GetSelection to create a Selection object
            // that contains ConversationHeader objects.
            Outlook.Selection convHeaders =
                selection.GetSelection(
                Outlook.OlSelectionContents.olConversationHeaders)
                as Outlook.Selection;
            Debug.WriteLine("Selection.Count (ConversationHeaders) = " 
                + convHeaders.Count);
            if (convHeaders.Count >= 1)
            {
                foreach (Outlook.ConversationHeader convHeader in convHeaders)
                {
                    // Enumerate the items in the ConversationHeader.
                    Outlook.SimpleItems items = convHeader.GetItems();
                    for (int i = 1; i <= items.Count; i++)
                    {
                        // Enumerate only MailItems in this example.
                        if (items[i] is Outlook.MailItem)
                        {
                            Outlook.MailItem mail = 
                                items[i] as Outlook.MailItem;
                            Debug.WriteLine(mail.Subject 
                                + " Received:" + mail.ReceivedTime);
                        }
                    }
                }
            }
        }
    }
}

См. также