Получение и перечисление выбранных бесед
В этом примере показано, как получить и перечислить выбранные беседы с помощью метода 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);
}
}
}
}
}
}
}