Item_Load Event: Outlook.ActiveExplorer (). Выделение не является нулевым, но не может быть преобразовано в Выделение (генерирует исключение), почему? - PullRequest
0 голосов
/ 26 апреля 2020

Я пытаюсь разработать надстройку для Outlook. Я зарегистрировался в событии Item_Load с этим кодом:

Application.ItemLoad += Item_Load;

В обработчике событий я использую этот код:

 [...]
 Outlook.Explorer explorer = this.Application.ActiveExplorer();
                        if (explorer != null)
                        {
                            if (explorer.Selection == null)
                            {
                                return;
                            }
                            int count = explorer.Selection.Count;
                            if (count > 0)
                            {
                                Outlook.Selection selection = explorer.Selection[1];

Это вызывает исключение, как explorer.Select [1] делает не доставить Outlook. Выбор? Как это возможно, если Outlook.Explorer.Selection [] определен как: https://docs.microsoft.com/de-de/office/vba/api/outlook.explorer.selection, поэтому он должен доставлять выборку?

1 Ответ

0 голосов
/ 26 апреля 2020

Свойство Selection возвращает объект Выбор , который содержит элемент или элементы, выбранные в окне проводника. Код должен выглядеть следующим образом:

Outlook.Selection selection = explorer.Selection;

Но если вы используете индексатор, вы получаете экземпляр элементов Outlook:

Outlook.MailItem mail = explorer.Selection[1] as Outlook.MailItem;

Помните, что событие ItemLoad предоставляет экземпляр загруженный элемент Outlook в качестве параметра для обработчика событий. Таким образом, нет необходимости получать текущие выбранные элементы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...