0

我有一个 Outlook VSTO 应用程序。我正在尝试从我加载的表单中调用 SeletNamesDialog。出现的对话框很棒,它的模式很好,但它似乎将我的表单移到了 Outlook 应用程序后面。因此,在我选择了一堆名称并单击“确定”后,对话框消失了,但我的表单不可见,除非我将 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();
4

1 回答 1

1

Outlook 将不允许您在显示通讯簿时指定窗体的窗口句柄。

您可以使用扩展 MAPI(仅限 C++ 或 Delphi)和IAddrbook::Address方法或 Redemption 及其RDOAddressBook.ShowAddressBook方法(它具有 ParentWindow 参数)或RDOSelectNamesDialog对象(它将使用分配给 RDOSession 的窗口句柄。父窗口属性)

于 2013-03-15T01:49:36.217 回答