我有一个outlook插件,可以在插件启动完成时向outlook添加自定义类别。
public void CreateCategories()
{
RDOCategories categories = null;
RDOCategory category = null;
try
{
var customCategoryList = FileManager.GetCustomCategoryList();
categories = rSession.Categories;
// add category
foreach (var customCategory in customCategoryList)
{
try
{
category = categories.Add(customCategory.Name
, PaintHelper.GetHexCodeByColorName(customCategory.Color));
}
catch (Exception ex)
{
}
finally
{
if (category != null)
{
Marshal.ReleaseComObject(category);
}
}
}
}
catch (Exception ex)
{
}
finally
{
if (categories != null)
{
Marshal.ReleaseComObject(categories);
}
}
}
当我从outlook中删除所有类别并尝试运行插件时,它仍然显示rssession .categories的计数作为6,它添加了所有默认的6个类别以及自定义类别。
当所有outlook分类被删除时,我们可以忽略添加默认分类吗?
如果没有类别,Redemption将假定它是Outlook从未接触过的全新商店,并添加默认类别。
尝试在添加自定义类别后删除默认类别。
使用命名空间对象的Categories属性获取一个Categories
对象引用,表示该命名空间的Master Category List
。
using Outlook = Microsoft.Office.Interop.Outlook;
// ...
private void EnumerateCategories()
{
Outlook.Categories categories =
Application.Session.Categories;
foreach (Outlook.Category category in categories)
{
Debug.WriteLine(category.Name);
Debug.WriteLine(category.CategoryID);
}
}
private void AddACategory()
{
Outlook.Categories categories =
Application.Session.Categories;
if (!CategoryExists("MyCategory"))
{
Outlook.Category category = categories.Add("MyCategory",
Outlook.OlCategoryColor.olCategoryColorDarkBlue,
Outlook.OlCategoryShortcutKey.olCategoryShortcutKeyCtrlF11);
}
}
private bool CategoryExists(string categoryName)
{
try
{
Outlook.Category category =
Application.Session.Categories[categoryName];
if(category != null)
{
return true;
}
else
{
return false;
}
}
catch { return false; }
}
AddACategory
过程获取当前用户的主类别列表,并使用CategoryExists
方法检查集合中是否存在名为MyCategory
的类别。如果没有名称为MyCategory
的类别存在,则AddACategory
将一个名为"MyCategory"的类别添加到主类别列表中,并使用Categories
集合的Add方法为其分配一个深蓝色。