Форма WPF в VSTO Outlook Add-In - проблемы с вводом данных - PullRequest
1 голос
/ 26 марта 2012

У меня есть надстройка Outlook VSTO (.net 4), которая открывает форму WPF.

В форме есть несколько элементов управления, включая 2 текстовых поля.

Если я открою форму, когда у меня выбрано электронное письмо (с фокусом) в обозревателе электронной почты, тогда все будет работать как положено.

Однако ...

Если я открою форму, когда выделю какой-либо адрес электронной почты, щелкнув тело сообщения (т. Е. Само сообщение), тогда текстовые поля в моей форме не будут использовать клавишу пробела или комбинации клавиш, такие как Ctrl + C, Ctrl + V. Если, например, нажать «Пробел», Outlook (в фоновом режиме) переходит к следующему сообщению.

Оказывается, это известная проблема, но я подумал, что в качестве обходного пути я мог бы настроить обозреватель электронной почты, чтобы он имел фокус непосредственно перед открытием формы.

Кто-нибудь знает, как я могу это сделать?

Решение

ОК, благодаря SliverNinja, я справился с этим обходным путем, который заставляет выбранное электронное письмо на панели предварительного просмотра исчезать, а затем снова появляться, но это работает, что мне достаточно ...

var app = new Microsoft.Office.Interop.Outlook.Application();
var activeExplorer = app.ActiveExplorer();

var previewPaneVisibility = activeExplorer.IsPaneVisible(OlPane.olPreview);
activeExplorer.ShowPane(OlPane.olPreview, false);
activeExplorer.ShowPane(OlPane.olPreview, previewPaneVisibility);

Ответы [ 2 ]

1 голос
/ 26 марта 2012

Это не подтверждено, но вот несколько идей для вас ...

Вы можете попробовать сбросить ActiveExplorer().Selection, чтобы изменить фокус.Если вы используете Outlook 2010, у вас есть доступ к Explorer.ClearSelection и Explorer.AddToSelection.Explorer.Activate также может изменить фокус - хотя у меня нет 2010 года для проверки.

Другой вариант, который следует рассмотреть, - это скрыть панель предварительного просмотра сообщений или переключить ее.См. Explorer.ShowPane и Explorer.IsPaneVisible.

Единственным другим возможным решением этой проблемы было бы выйти за пределы оболочек VSTO COM и копаться в интерфейсах нижнего уровня.Оформить заказ IDTExtensibility2 для поведения более низкого уровня.

0 голосов
/ 15 января 2014

Я знаю, что это старый вопрос, но у нас тоже была эта проблема, и мы решили ее, открыв такие окна WPF в новом потоке.

...