【问题标题】:My custom Outlook Add-in is causing Excel Save dialog box to hide itself我的自定义 Outlook 加载项导致 Excel 保存对话框自行隐藏
【发布时间】:2012-02-07 08:20:13
【问题描述】:
我创建了一个 Outlook 加载项,它向新电子邮件窗口的功能区添加了一个按钮,但这会导致问题。
会发生什么:
- 用户已打开 Outlook。
- 用户打开 Excel。
- 用户通过文件->保存并发送->作为附件发送 excel 文档给某人
- 用户对文档进行了更改
- 用户尝试关闭文档
- 此时 Outlook 会提示用户保存文件,但对话框隐藏在 Excel 窗口后面,如果不做一些恶作剧,用户将无法访问它。
我的 Outlook 加载项还有许多其他功能,但我已将其固定到我创建的 Ribbon.cs 文件中,以便在新电子邮件窗口中添加一个按钮。当我将 OfficeRibbon 对象的 RibbonType 属性从 Micorosft.Outlook.Mail.Compose 更改为空时,“保存”对话框将按原样显示。当我将它改回“撰写”时,它会再次隐藏对话框。
有没有人知道解决这个问题的任何方法?我已确认当项目是 Outlook 2007 加载项或 Outlook 2010 加载项时会发生这种情况。
提前致谢。
【问题讨论】:
标签:
c#
excel
outlook
vsto
outlook-addin
【解决方案1】:
所以参考 user1217053 发送的链接,答案可能是...
为 Outlook.Mailitem 创建一个类范围字段
让它绑定到 BeforeClose 事件。
在该字段的 BeforeClose 事件处理程序中,添加诸如 ... 之类的代码
cMailItem_BeforeClose(bool Cancel)
{
var Insp = cMailItem.GetInspector();
Insp.Close();
Marshal.FinalReleaseCOMObject(Insp);
Insp = null;
}
那么希望这将摆脱影子检查员。
【解决方案2】:
我不知道你是否还在解决这个问题,但我遇到了完全相同的问题,然后找到了解决方案。您必须像我一样使用功能区设计器。功能区设计器会导致此问题。我不得不从 Ribbon Designer 更改为 Ribbon XML。删除代码和更改一些逻辑需要做一些工作,但这解决了问题。我听说另一个选择是使用包装类。
希望这会有所帮助。