VSTO-Custom Task Pane, как получить текущий MailItem - PullRequest
0 голосов
/ 02 апреля 2019

Я хочу найти способ, позволяющий настраиваемой области задач получать текущий инспектор. какой метод я должен использовать?

Я создаю VSTO Outlook C # add, перейдя по этой ссылке: Пошаговое руководство. Отображение пользовательских панелей задач с сообщениями электронной почты в Outlook

Я вставляю кнопку в панель задач. Теперь я хочу использовать эту кнопку, чтобы вставить заголовок письма, например «проверить кнопку», с помощью действия Button_Click

Я пытаюсь использовать Outlook.Inspector inspector = Globals.ThisAddIn.Application.ActiveInspector();

Или Outlook.MailItem mailItem = Inspector.CurrentItem as Outlook.MailItem;

чтобы получить текущий инспектор, но, кажется, не работает.

Вот мой код ниже:

private void InsertButton_Click(object sender, EventArgs e)
        {
            Outlook.Inspector inspector = Globals.ThisAddIn.Application.ActiveInspector();
            if (inspector is Outlook.MailItem)
            {
                public Outlook.MailItem mailItem;
                mailItem = inspector as Outlook.MailItem;
                mailItem.subject = "test for button";                
            }                               
        }

И я тоже попробовал так:

private void InsertButton_Click(object sender, EventArgs e)
        {
            Outlook.MailItem mailItem = Inspector.CurrentItem as Outlook.MailItem;
            mailItem.subject = "test for button";
        }

Первый код if суждение неверно. И второй код mailItem=null;

Но мой ожидаемый результат - mailItem, равный текущему элементу, где находится область задач.

Ответы [ 2 ]

0 голосов
/ 04 апреля 2019

Джон Харт @ GitHub ответил на мой вопрос.Вот его код ниже:

private void Button1_Click(object sender, EventArgs e)
    {
        Inspector inspector = Globals.ThisAddIn.Application.ActiveInspector();
        MailItem mailItem = inspector.CurrentItem as MailItem;
        mailItem.Subject = "test for button";
    }

Исходный ответ см. Проблему на GitHub: VSTO Outlook-Task Pane получить Текущий MailItem

0 голосов
/ 02 апреля 2019

Первый пример кода неправильный - «if (inspector is Outlook.MailItem)» всегда false, поскольку инспектор - это объект Inspector, а не объект MailItem.

Для второго примера, пожалуйста, покажите весь свой код - у вас, похоже, есть свойство Inspector уровня класса, но неясно, как это установить. Globals.ThisAddIn.Application.ActiveInspector (). CurrentItem должен работать для возврата объекта MailItem, ЕСЛИ это электронная почта, а не элемент другого типа (вы, конечно, всегда должны проверять тип).

...