Перечисление и добавление категорий
В этом примере показано, как перечислять категории и добавлять их в основной список категорий.
Пример
Примечание.
Приведенный ниже пример кода представляет собой фрагмент из книги Программирование приложений для Microsoft Office Outlook 2007.
Объектная модель Outlook поддерживает категории, которые помогают упорядочивать элементы в папке "Входящие" пользователя. Чтобы поддерживать более высокий уровень организации, можно выполнять указанные ниже действия.
- классифицировать элементы Outlook и отображать их по категориям;
- добавлять несколько цветовых категорий для одного элемента Outlook;
- группировать и упорядочивать элементы Outlook по цветовым категориям;
- назначать сочетания клавиш для каждой цветовой категории, облегчая пользователям процесс распределения элементов по категориям;
- создавать, удалять или изменять цветовые категории программным путем или с помощью действий пользователя в интерфейсе Outlook.
Чтобы выделить функции категорий, объектная модель Outlook содержит объект Category, который представляет одну пользовательскую цветовую категорию в основном списке категорий. Основной список категорий содержит цветовые категории, которые представлены в пользовательском интерфейсе Outlook. Список представлен коллекцией Categories объекта NameSpace. Чтобы создать объект Category, используйте метод Add(String, Object, Object) коллекции Categories. При создании объекта Category создается глобальный уникальный идентификатор (GUID), который нельзя изменить. Он представлен свойством CategoryID. Однако можно изменить имя, цвет и сочетание клавиш, связанные с цветовой категорией, задав свойства Name, Color и ShortcutKey соответственно для объекта Category. Можно изменить свойство Color, установив или получив его константу OlCategoryColor. Чтобы воспроизвести цвет в пользовательском элементе управления, используйте следующие нередактируемые свойства объекта Category:
Эти свойства возвращают значение OLE_COLOR , которое зависит от свойства Color объекта Category .
Элементы Outlook отображаются на основе имени категории. Каждый объект элемента имеет свойство Categories, в котором хранится строка с разделителями запятыми, представляющая названия категорий. (Например, для объекта MailItem следует использовать свойство MailItemCategories . Это позволяет добавлять категорию для элемента, даже если этой категории нет в основном списке категорий.
Примечание.
Если свойство Categories элемента содержит имя категории, не входящей в коллекцию Categories объекта NameSpace, то имя этой категории, связанной с элементом Outlook, отображается, но без соответствующего цвета. Свойство Categories объекта Item не возвращает коллекцию Categories.
В представленном ниже примере кода первая процедура EnumerateCategories получает основной список категорий текущего пользователя, представленный коллекцией Categories. Затем перечисляются объекты Category в этой коллекции и записываются свойства Name и CategoryID для отслеживания прослушивателей коллекции Listeners. Вторая процедура AddACategory получает основной список категорий текущего пользователя и использует метод CategoryExists для проверки существования категории "ISV" в коллекции. Если категория с именем "ISV" не существует, процедура AddACategory добавляет категорию "ISV" в основной список категорий и назначает ей темно-синий цвет с помощью метода Add коллекции Categories. Для категории также назначается сочетание клавиш CTRL + F11.
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("ISV"))
{
Outlook.Category category = categories.Add("ISV",
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; }
}