如何以编程方式禁用 Outlook 中的联系人编辑?
How to programatically disable contacts editing in Outlook?
在 Outlook 中,我们需要禁用编辑从外部源(作为我们加载项的一部分)导入的联系人。为了区分此类联系人,我们引入了用户定义的 属性,这是我们在导入期间设置的(例如 ExternalId)。
但是您如何在代码中禁用此类联系人的编辑功能?
无法以编程方式执行此操作。
我想说没有简单的方法可以禁用在 Outlook 中编辑联系人。
但是!您可以开发自定义 UI,它可以在大多数情况下阻止编辑联系人 - 替换 Inspectors 和 Explorer 中的默认 UI。因此,用户将获得您的自定义 UI,您可以在其中允许或不允许编辑联系人。有关详细信息,请参阅 Creating Outlook Form Regions。
您可能还会发现 Advanced Outlook view and form regions 有帮助。
当然可以禁用它!
您可以禁用显示带有联系人详细信息的对话框(关键提示:挂钩 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;
}
在 Outlook 中,我们需要禁用编辑从外部源(作为我们加载项的一部分)导入的联系人。为了区分此类联系人,我们引入了用户定义的 属性,这是我们在导入期间设置的(例如 ExternalId)。
但是您如何在代码中禁用此类联系人的编辑功能?
无法以编程方式执行此操作。
我想说没有简单的方法可以禁用在 Outlook 中编辑联系人。
但是!您可以开发自定义 UI,它可以在大多数情况下阻止编辑联系人 - 替换 Inspectors 和 Explorer 中的默认 UI。因此,用户将获得您的自定义 UI,您可以在其中允许或不允许编辑联系人。有关详细信息,请参阅 Creating Outlook Form Regions。
您可能还会发现 Advanced Outlook view and form regions 有帮助。
当然可以禁用它!
您可以禁用显示带有联系人详细信息的对话框(关键提示:挂钩 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;
}