我的自定义Outlook加载项导致Excel保存对话框隐藏自身

时间:2012-01-10 22:27:28

标签: c# excel outlook vsto outlook-addin

我创建了一个Outlook加载项,可以在新电子邮件窗口的功能区中添加一个按钮,但这会导致问题。

以下是发生的事情:

  1. 用户已打开Outlook。
  2. 用户打开Excel。
  3. 用户通过文件发送Excel文档 - >保存并发送 - >发送为附件
  4. 用户对文档进行了更改
  5. 用户尝试关闭文档
  6. 这是当Outlook提示用户保存文件时,但是对话框隐藏在Excel窗口后面,如果没有做一些恶作剧,用户就无法访问它。
  7. 我的Outlook外接程序还有许多其他功能,但我已将其固定到我创建的Ribbon.cs文件中,以便在新的电子邮件窗口中添加按钮。当我将OfficeRibbon对象的RibbonType属性从Micorosft.Outlook.Mail.Compose更改为空时,“保存对话框”显示应该显示的内容。当我将其更改回“Compose”时,它会再次隐藏对话框。

    有没有人知道这方面的任何方法?我已经确认,当项目是Outlook 2007加载项或Outlook 2010加载项时会发生这种情况。

    提前致谢。

2 个答案:

答案 0 :(得分:1)

因此,在参考user1217053发送的链接时,答案可能就是......

为Outlook.Mailitem创建一个类范围字段 让它绑定到BeforeClose事件。

在此字段的BeforeClose事件处理程序中,添加代码,例如......

cMailItem_BeforeClose(bool Cancel)
{
  var Insp = cMailItem.GetInspector();
  Insp.Close();
  Marshal.FinalReleaseCOMObject(Insp);
  Insp = null;
}

然后希望这将摆脱影子检查员。

答案 1 :(得分:0)

我不知道你是否仍然在研究这个问题,但我遇到了完全相同的问题,然后找到了解决方案。您必须像我一样使用功能区设计器。功能区设计师导致此问题。我不得不从Ribbon设计器更改为Ribbon XML。删除代码并更改某些逻辑是一项小工作,但这解决了问题。我听说另一个是使用包装类。

希望这会有所帮助。