我有一个Outlook VSTO应用程序。我试图从我加载的表单调用SeletNamesDialog。对话框出现很棒,它的模态很好,但它似乎将我的形式移到outlook应用程序后面。因此,在我选择一堆名称并单击确定后,对话框消失,但我的表单不可见,除非我最小化前景(这显然不是理想的)。
反正有没有避免这种情况发生?这是我用来加载对话框的代码:
var app = new Application();
AddressList gal = app.ActiveExplorer().Session.GetGlobalAddressList();
var dlg = app.Session.GetSelectNamesDialog();
dlg.InitialAddressList = gal;
bool b = dlg.Display();
var sb = new StringBuilder();
foreach (Recipient r in dlg.Recipients)
{
sb.Append(r.Name + ";");
}
txtPeople.Text = sb.ToString();
答案 0 :(得分:1)
在显示地址簿时,Outlook不允许您指定表单的窗口句柄。
您可以使用扩展MAPI(仅限C ++或Delphi)和IAddrbook::Address方法或Redemption及其RDOAddressBook.ShowAddressBook方法(具有ParentWindow参数)或RDOSelectNamesDialog对象(它将使用分配给RDOSession.ParentWindow属性的窗口句柄)