2015-01-25 3 views
0

Я добавил ContextMenuItem для контактов ContextMenu для Outlook.Как получить Outlook Appointment из ContextMenu

The menu item

Проблема заключается в том, что я не могу понять, как получить объект Назначение. В случае, если я получаю IRibbonControl, а его свойство Context должно содержать Назначение, но вместо этого оно содержит Selection. Насколько я могу видеть, я не могу использовать Selection, чтобы добраться до Назначения.

enter image description here

Эта страница, куда я происхожу из: https://msdn.microsoft.com/en-us/library/office/ff863278%28v=office.14%29.aspx

Любой знает, как получить назначение?

ответ

6

Объект Selection содержит объект AppointmentItem, выбранный на картинке. Например:

   Object selObject = Selection[1]; 
       if (selObject is Outlook.MailItem) 
       { 
        Outlook.MailItem mailItem = 
         (selObject as Outlook.MailItem); 
        itemMessage = "The item is an e-mail message." + 
         " The subject is " + mailItem.Subject + "."; 
        mailItem.Display(false); 
       } 
       else if (selObject is Outlook.ContactItem) 
       { 
        Outlook.ContactItem contactItem = 
         (selObject as Outlook.ContactItem); 
        itemMessage = "The item is a contact." + 
         " The full name is " + contactItem.Subject + "."; 
        contactItem.Display(false); 
       } 
       else if (selObject is Outlook.AppointmentItem) 
       { 
        Outlook.AppointmentItem apptItem = 
         (selObject as Outlook.AppointmentItem); 
        itemMessage = "The item is an appointment." + 
         " The subject is " + apptItem.Subject + "."; 
       } 
       else if (selObject is Outlook.TaskItem) 
       { 
        Outlook.TaskItem taskItem = 
         (selObject as Outlook.TaskItem); 
        itemMessage = "The item is a task. The body is " 
         + taskItem.Body + "."; 
       } 
       else if (selObject is Outlook.MeetingItem) 
       { 
        Outlook.MeetingItem meetingItem = 
         (selObject as Outlook.MeetingItem); 
        itemMessage = "The item is a meeting item. " + 
         "The subject is " + meetingItem.Subject + "."; 
       } 

Для получения дополнительной информации см. How to: Programmatically Determine the Current Outlook Item.

+0

Проводник. Избирательная коллекция не должна использоваться. См. Мой ответ. –

+0

Дмитрий, на самом деле я не предлагал использовать объект Explorer. Свойство Context для IRibbonControl используется для получения объекта Selection на основе кода, показанного в исходном сообщении. Почему вы подумали об Исследователе? –

+0

Ссылка в вашем ответе использует Explorer.Selection. –

0

У не использование Explorer.Selection в обработчик событий всплывающего меню - можно выбрать одно сообщение, а затем щелкните правой кнопкой мыши на другое сообщение, не выбирая. Коллекция Explorer.Selection не изменится, и событие Explorer.SelectionChange не будет срабатывать.

При обработке обработчика события параметр Context будет передан вам. Передайте его объекту Selection и используйте его вместо этого. Эта коллекция будет отличаться от объекта Explorer.Selection.

+0

Свойство IRibbonControl.Context используется в коде для получения объекта Selection. –

+0

Где? Я не вижу его в исходном вопросе или в вашем ответе. –

+0

Посмотрите на метод SendToGoogle. –