如何以编程方式禁用Outlook中的联系人编辑?

时间:2016-02-01 05:34:16

标签: outlook outlook-addin

在Outlook中,我们需要禁用从外部源(作为加载项的一部分)导入的联系人的编辑。为了区分这些联系人,我们引入了用户定义的属性,我们在导入期间设置了该属性(例如ExternalId)。

但是,如何在代码中禁用此类联系人的编辑功能?

3 个答案:

答案 0 :(得分:1)

无法以编程方式执行此操作。

答案 1 :(得分:0)

我想说在Outlook中禁用编辑联系人没有什么简单的方法。

但是!您可以开发一个自定义UI,在大多数情况下可以阻止联系人编辑 - 替换Inspectors和Explorers中的默认UI。因此,用户将获得您的自定义UI,您可以在其中允许编辑联系人。有关详细信息,请参阅Creating Outlook Form Regions

您可能还会发现Advanced Outlook view and form regions有帮助。

答案 2 :(得分:0)

当然可以禁用它!

您可以禁用显示包含联系人详细信息的对话框(关键提示​​:挂钩到Application.ItemLoad,如果是您不想编辑的联系人,可以取消该活动)

或者,您最好拒绝保存更改。请参阅示例代码。

private void ThisAddIn_Startup(object sender, System.EventArgs e)
{
    this.Application.Inspectors.NewInspector += Inspectors_NewInspector;
}

private void Inspectors_NewInspector(Outlook.Inspector Inspector)
{
    Outlook.ContactItem contact = Inspector.CurrentItem as Outlook.ContactItem;
    if (null != contact)
    {
        if (Utils.IsNonEditableContact(contact))
        {
            contact.Write += CancelSaveEventForContact;
        }
    }
}        

private void CancelSaveEventForCrmContact(ref bool Cancel)
{
    MessageBox.Show("Editing of the this contacts in Outlook is not allowed.", "I'm sorry!", MessageBoxButtons.OK, MessageBoxIcon.Error);
    Cancel = true;
}