Поделиться через


Практическое руководство. Добавление пользовательских панелей инструментов и элементов панели инструментов в Outlook

Обновлен: Ноябрь 2007

Применение

Сведения, приведенные в данном разделе, относятся только к указанным проектам Visual Studio Tools for Office и версиям Microsoft Office.

Тип проекта

  • Проекты уровня приложения

Версия Microsoft Office

  • Outlook 2003

  • Outlook 2007

Дополнительные сведения см. в разделе Доступность функций по типам приложений и проектов.

В следующем примере осуществляется создание панели инструментов в Microsoft Office Outlook. Панель инструментов, содержащая 2 кнопки, появляется в верхней части приложения. При нажатии кнопки код выводит сообщение, отображающее заголовок кнопки.

Пример

Dim newToolBar As Office.CommandBar
Dim firstButton As Office.CommandBarButton
Dim secondButton As Office.CommandBarButton
Dim selectExplorers As Outlook.Explorers

Private Sub ThisAddIn_Startup(ByVal sender As Object, _
        ByVal e As System.EventArgs) Handles Me.Startup
    selectExplorers = Me.Application.Explorers()
    AddHandler selectExplorers.NewExplorer, AddressOf _
        Me.NewExplorer_Event
    AddToolbar()
End Sub

Private Sub NewExplorer_Event(ByVal new_Explorer _
    As Outlook.Explorer)
    new_Explorer.Activate()
    newToolBar = Nothing
    Call Me.AddToolbar()
End Sub

Private Sub AddToolbar()

    Dim button_1 As Office.CommandBarButton
    Dim button_2 As Office.CommandBarButton
    If newToolBar Is Nothing Then
        Dim cmdBars As Office.CommandBars = _
            Me.Application.ActiveExplorer().CommandBars
        newToolBar = cmdBars.Add("NewToolBar", _
            Office.MsoBarPosition.msoBarTop, False, True)
    End If
    Try
        button_1 = CType(newToolBar.Controls.Add(1),  _
            Office.CommandBarButton)
        With button_1
            .Style = Office.MsoButtonStyle.msoButtonCaption
            .Caption = "Button 1"
            .Tag = "Button1"
        End With
        If Me.firstButton Is Nothing Then
            Me.firstButton = button_1
            AddHandler firstButton.Click, AddressOf ButtonClick
        End If
        button_2 = CType(newToolBar.Controls.Add(1),  _
            Office.CommandBarButton)
        With button_2
            .Style = Office.MsoButtonStyle.msoButtonCaption
            .Caption = "Button 2"
            .Tag = "Button2"
        End With
        If Me.secondButton Is Nothing Then
            Me.secondButton = button_2
            AddHandler secondButton.Click, AddressOf ButtonClick
        End If
        newToolBar.Visible = True
    Catch ex As Exception
        MessageBox.Show(ex.Message)
    End Try
End Sub

Private Sub ButtonClick(ByVal ctrl As Office.CommandBarButton, _
        ByRef Cancel As Boolean)
    MessageBox.Show("You clicked: " + ctrl.Caption)
End Sub
Office.CommandBar newToolBar;
Office.CommandBarButton firstButton;
Office.CommandBarButton secondButton;
Outlook.Explorers selectExplorers;

private void ThisAddIn_Startup(object sender, System.EventArgs e)
{

    selectExplorers = this.Application.Explorers;
    selectExplorers.NewExplorer +=new Outlook
        .ExplorersEvents_NewExplorerEventHandler(newExplorer_Event);
    AddToolbar();
}

private void newExplorer_Event(Outlook.Explorer new_Explorer)
{
    ((Outlook._Explorer)new_Explorer).Activate();
    newToolBar = null;
    AddToolbar();
}

private void AddToolbar()
{

    if (newToolBar == null)
    {
        Office.CommandBars cmdBars = 
            this.Application.ActiveExplorer().CommandBars;
        newToolBar = cmdBars.Add("NewToolBar", 
            Office.MsoBarPosition.msoBarTop, false, true);
    }
    try
    {
        Office.CommandBarButton button_1 = 
            (Office.CommandBarButton)newToolBar.Controls
            .Add(1, missing, missing, missing, missing);
        button_1.Style = Office
            .MsoButtonStyle.msoButtonCaption;
        button_1.Caption = "Button 1";
        button_1.Tag = "Button1";
        if (this.firstButton == null)
        {
            this.firstButton = button_1;
            firstButton.Click += new Office.
                _CommandBarButtonEvents_ClickEventHandler
                (ButtonClick);
        }

        Office.CommandBarButton button_2 = (Office
            .CommandBarButton)newToolBar.Controls.Add
            (1, missing, missing, missing, missing);
        button_2.Style = Office
            .MsoButtonStyle.msoButtonCaption;
        button_2.Caption = "Button 2";
        button_2.Tag = "Button2";
        newToolBar.Visible = true;
        if (this.secondButton == null)
        {
            this.secondButton = button_2;
            secondButton.Click += new Office.
                _CommandBarButtonEvents_ClickEventHandler
                (ButtonClick);
        }
    }
    catch (Exception ex)
    {
        MessageBox.Show(ex.Message);
    }
}

private void ButtonClick(Office.CommandBarButton ctrl,
        ref bool cancel)
{
    MessageBox.Show("You clicked: " + ctrl.Caption);
}

Отказоустойчивость

Объявите переменные командной строки на уровне класса. Если объявить их внутри метода, они выйдут из области действия, как только метод закончит выполнение и сборщик мусора приступит к перераспределению памяти.

См. также

Задачи

Практическое руководство. Добавление пользовательских меню и пунктов меню к Outlook

Практическое руководство. Создание панелей инструментов Office программными средствами

Практическое руководство. Создание меню Office программными средствами

Основные понятия

Общие сведения об объектной модели Outlook

Настройка пользовательского интерфейса Office

Создание решений Office в Visual Studio