共用方式為


列舉和新增類別

此範例示範如何列舉類別,並將類別新增至主要類別清單。

範例

注意事項

下列程式代碼範例是 Microsoft Office Outlook 2007 程式設計應用程式的摘錄。

Outlook 物件模型支援可協助組織使用者收件匣中項目的類別。 若要維護更高層級的組織,您可以執行下列動作:

  • 將 Outlook 項目分類並依類別顯示。
  • 將多個色彩類別套用至單一 Outlook 專案。
  • 依色彩類別分組及排序 Outlook 專案。
  • 將快捷鍵指派給每個色彩類別,讓使用者更輕鬆地分類專案。
  • 以程式設計方式或在 Outlook 使用者介面內的用戶動作,建立、刪除和變更色彩類別。

為了公開類別的功能,Outlook 物件模型會提供 Category 物件,代表主要類別清單中的單一使用者定義色彩類別。 主要類別清單包含 Outlook 使用者介面中顯示的色彩類別。 此清單是由 NameSpace 物件的 Categories 集合表示。 若要建立 Category 物件,請使用 Categories 集合Add (String、 Object、 Object) 方法。 當您建立 Category 物件時,會建立 (GUID) 的全域唯一標識碼,而且無法變更此識別符。 它是由 CategoryID 屬性表示。 不過,您可以分別設定 Category 物件的 Name、Color 和 ShortcutKey 屬性,來變更與色彩類別相關聯的名稱、色彩和快捷鍵。 您可以藉由設定或取得其 OlCategoryColor 常數來變更 Color 屬性。 若要在自訂控件中重現色彩,請使用 Category 物件的 下列唯讀屬性:

這些屬性會傳回OLE_COLOR值,這取決於 Category 物件的 Color 屬性。

Outlook 項目會根據類別名稱顯示。 每個項目物件都有一個 Categories 屬性,該屬性會儲存代表類別名稱的逗號分隔字串。 (例如,針對 MailItem 物件,您會使用 MailItemCategories 屬性) 。 這可讓您將類別新增至專案,即使類別目錄不在主要類別清單中也一般。

注意事項

如果專案的 Categories 屬性包含不在 NameSpace 物件之 Categories 集合中的類別名稱,則會顯示與該 Outlook 專案相關聯的類別名稱,但沒有相關聯的色彩。 Item 物件上的 Categories 屬性不會傳回 Categories 集合。

在下列程式代碼範例中,第一個程式 EnumerateCategories 會取得目前使用者的主要類別清單,以 Categories 集合表示。 然後它會列舉該集合中的 Category 物件,並將 NameCategoryID 屬性寫入接聽程式集合的追蹤接 程式。 第二個程式 AddACategory 會取得目前使用者的主要類別清單,並使用 CategoryExists 方法來檢查名為 「ISV」 的類別是否存在於集合中。 如果沒有任何名稱為 「ISV」 的類別存在,AddACategory 會將名為 「ISV」 的類別新增至主要類別清單,並使用 Categories 集合的 Add 方法,為其指派深藍色色彩。 它也會將 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; }
}

另請參閱