Outlook VSTO - как показать текстовое поле Пригласить участников, когда я звоню на встречу.Display ()?

У меня есть следующий код, чтобы открыть приложение Outlook. Он отлично работает, за исключением того, что я не вижу фактического текстового поля участников во всплывающем окне, пока не нажму «Пригласить участников». Когда я нажимаю эту кнопку в элементе приложения, он показывает список людей, которых я заполнил ниже.

 public void BookAppt(List<string> rooms, DateTime startTime, DateTime endTime)
    {
        var PacktAppointmentItem = (Microsoft.Office.Interop.Outlook.AppointmentItem)Globals.ThisAddIn.Application.CreateItem(Microsoft.Office.Interop.Outlook.OlItemType.olAppointmentItem);
        PacktAppointmentItem.Subject = "Test Meeting";
        PacktAppointmentItem.Location = "My Room";
        PacktAppointmentItem.Start = startTime;
        PacktAppointmentItem.End = endTime;
        PacktAppointmentItem.Body = "Test Meeting";
        PacktAppointmentItem.RequiredAttendees = String.Join(";", rooms);
        PacktAppointmentItem.Display(true);
    }

Есть ли способ, как это текстовое поле участников отображается автоматически без необходимости нажимать кнопку «Пригласить участников»? Кроме того, есть ли способ программно вызвать "Проверить имена", чтобы участники были разрешены?


person leora    schedule 18.02.2013    source источник
comment
Вы можете проверить имена, вызвав метод ResolveAll() для объекта AppointmentItem.Recipients. Я не знаю ответа на другую часть вопроса, но, возможно, объект FormProperties имеет к этому отношение.   -  person John Willemse    schedule 18.02.2013
comment
@John Willernse - спасибо за ResolveAll (), поскольку это сработало. . надеюсь, кто-то вернется с первым вопросом (я думал, что это может быть параметр в методе отображения, но не могу найти его там или в каком-либо свойстве   -  person leora    schedule 18.02.2013


Ответы (1)


Я думаю, что вам нужен MeetingItem, а не AppointmentItem. Вы не можете напрямую создать MeetingItem, но вы почти везде: просто добавьте эту строку в свой код:

PacktAppointmentItem.MeetingStatus = Outlook.OlMeetingStatus.olMeeting;

Итак, ваш окончательный код должен понравиться

var PacktAppointmentItem = (Microsoft.Office.Interop.Outlook.AppointmentItem)Globals.ThisAddIn.Application.CreateItem(Microsoft.Office.Interop.Outlook.OlItemType.olAppointmentItem);
PacktAppointmentItem.Subject = "Test Meeting";
PacktAppointmentItem.Location = "My Room";
PacktAppointmentItem.Start = DateTime.Now;
PacktAppointmentItem.MeetingStatus = Outlook.OlMeetingStatus.olMeeting;
PacktAppointmentItem.End = DateTime.Now.AddHours(1.0);
PacktAppointmentItem.Body = "Test Meeting";
PacktAppointmentItem.RequiredAttendees = String.Join(";", rooms);
PacktAppointmentItem.Display(true);

Краткая справка: от Microsoft: http://msdn.microsoft.com/en-us/library/office/microsoft.office.interop.outlook.meetingitem(v=office.14).aspx

В отличие от других объектов Microsoft Outlook, вы не можете создать этот [например, MeetingItem] объект. Он создается автоматически, когда вы устанавливаете для свойства MeetingStatus объекта AppointmentItem значение olMeeting и отправляете его одному или нескольким пользователям. Они получают его в своих почтовых ящиках как MeetingItem.

person Magnum    schedule 19.02.2013
comment
спасибо Магнум за решение. .я знал, что должен быть способ :) - person leora; 19.02.2013