我正在通过.net应用程序在microsoft outlook中创建文件夹,但它只有在我重新启动outlook时才会显示。应在不重新启动outlook的情况下显示新文件夹。我使用的代码如下:
Outlook.NameSpace nameSpace = OutlookApp.GetNamespace("MAPI");
Outlook.MAPIFolder folderInbox = nameSpace.GetDefaultFolder
(Outlook.OlDefaultFolders.olFolderInbox);
Outlook.Folders inboxFolders = folderInbox.Folders;
Outlook.MAPIFolder subfolderInbox = null;
Outlook.Application oApp;
oApp = nameSpace.Application;
Outlook.Explorer exp = oApp.ActiveExplorer();
subfolderInbox = inboxFolders.Add("InboxSubfolder",
Outlook.OlDefaultFolders.olFolderInbox);
exp.CurrentFolder = subfolderInbox;发布于 2013-09-11 00:29:26
我看到你在用Add-in Express。
我将您的代码附加到一个adxRibbonButton控件上,它为我工作。
你是如何调用这个代码的?
我看到一些不必要的对象创建,并在下面编辑的版本中删除了它们。
还有- you want to make sure to release the Office objects you create。
我建议按如下方式更新代码:
private void adxRibbonButton1_OnClick(object sender, IRibbonControl control, bool pressed)
{
Outlook.NameSpace nameSpace = OutlookApp.Session; //OutlookApp.GetNamespace("MAPI");
Outlook.MAPIFolder folderInbox = nameSpace.GetDefaultFolder
(Outlook.OlDefaultFolders.olFolderInbox);
Outlook.Folders inboxFolders = folderInbox.Folders;
Outlook.MAPIFolder subfolderInbox = null;
//Outlook.Application oApp;
//oApp = nameSpace.Application;
Outlook.Explorer exp = OutlookApp.ActiveExplorer(); //oApp.ActiveExplorer();
subfolderInbox = inboxFolders.Add("InboxSubfolder",
Outlook.OlDefaultFolders.olFolderInbox);
exp.CurrentFolder = subfolderInbox;
//Release COM Objects
if (exp != null) Marshal.ReleaseComObject(exp);
if (subfolderInbox != null) Marshal.ReleaseComObject(subfolderInbox);
if (inboxFolders != null) Marshal.ReleaseComObject(inboxFolders);
if (folderInbox != null) Marshal.ReleaseComObject(folderInbox);
if (nameSpace != null) Marshal.ReleaseComObject(nameSpace);
}https://stackoverflow.com/questions/18720185
复制相似问题