Диалоговое окно "Классификация надстройки vsto" Outlook 2003 открывается за новым окном почты


Я создал надстройку C # для Outlook 2003. Надстройка создает панель команд в новой почтовой форме. Эта панель команд содержит кнопку, открывающую диалоговое окно "Категоризация". Чтобы открыть диалог, я использую метод ShowCategoriesDialog интерфейса MailItem.

Microsoft.Office.Interop.Outlook.MailItem item = (MailItem)inspector.CurrentItem;
item.ShowCategoriesDialog();

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

Знаете, как это исправить?

Большое спасибо,
Андрей Козачук


person Andriy Kozachuk    schedule 30.03.2011    source источник


Ответы (1)


Двумя способами я могу думать навскидку.

1) попробуйте некоторую комбинацию минимизации и восстановления инспектора, на который у вас есть ссылка (Inspector.WindowState), возможно min, restore, showcat или min / showcat / restore. Не лучшее решение, потому что это вызовет мигание. 2) если вы делаете это из события, которое вызывает показ инспектора, возможно, вы не позволили инспектору полностью реализовать себя. В этом случае используйте таймер или фоновый поток, чтобы ненадолго задержать отображение окна кошки (хотя это немного хакерски). 3) используйте Windows API EnumWindows, чтобы найти окно категорий, и используйте SetWindowPos, чтобы вернуть его в начало zorder. (возможно, лучшее решение).

Я много раз сталкивался с подобными проблемами с Outlook, но не с этим конкретным случаем.

person DarinH    schedule 31.03.2011
comment
Я выполняю эту операцию из события, которое запускается при нажатии кнопки. Пробовал таймер и сворачивание / восстановление - не помогает. Окно категоризации является модальным, и я не могу ничего делать, пока оно открыто, поэтому я не могу использовать способ номер 3. Мы попытались переустановить Outlook, и это помогло - проблем больше нет. - person Andriy Kozachuk; 05.04.2011