Надстройка Outlook для VisualStudio - Обработчик событий кнопки - PullRequest
0 голосов
/ 05 мая 2020

уже несколько дней я ищу решение, но всегда получаю почти код моей проблемы. Я хочу создать несколько кнопок в Outlook через VisualStudio. Эти кнопки должны выполнять одну и ту же подпрограмму. Но когда я создаю кнопки с показанным кодом, только последняя созданная кнопка обрабатывает событие щелчка.

Я использую VisualStudio (15.0) и Outlook (16.0, 32 бит)

Многие спасибо за вашу помощь

Holger


Public Class ThisAddIn
    Dim ButtonControl As Office.CommandBarButton
    Dim menuBar As Office.CommandBar
    Dim newMenuBar As Office.CommandBarPopup

    Private Sub ThisAddIn_Startup() Handles Me.Startup
        Dim i As Integer

        menuBar = Me.Application.ActiveExplorer().CommandBars.ActiveMenuBar
        newMenuBar = menuBar.Controls.Add(Office.MsoControlType.msoControlPopup, Temporary:=True)
        If newMenuBar IsNot Nothing Then
            newMenuBar.Caption = "Mailverschiebung"

            For i = 0 To 3
                ButtonControl = newMenuBar.Controls.Add
                ButtonControl.Caption = "zeichen" & i
                ButtonControl.Tag = "zeichen" & i
                AddHandler ButtonControl.Click, AddressOf ButtonControl_Click

            Next
        End If
    End Sub

    Sub ButtonControl_Click()
        MsgBox("Läuft")
    End Sub

    Private Sub ThisAddIn_Shutdown() Handles Me.Shutdown

    End Sub

End Class

1 Ответ

0 голосов
/ 05 мая 2020

Вы должны поддерживать ссылку на объект, если хотите, чтобы события обрабатывались для всех кнопок. Итак, по сути, вам нужно определить список или массив кнопок в глобальной области.

Public Class ThisAddIn
    Dim ButtonControl As Office.CommandBarButton
    Dim ButtonControls As List(Of Office.CommandBarButton) = new List(Of Office.CommandBarButton)()
    Dim menuBar As Office.CommandBar
    Dim newMenuBar As Office.CommandBarPopup

    Private Sub ThisAddIn_Startup() Handles Me.Startup
        Dim i As Integer

        menuBar = Me.Application.ActiveExplorer().CommandBars.ActiveMenuBar
        newMenuBar = menuBar.Controls.Add(Office.MsoControlType.msoControlPopup, Temporary:=True)
        If newMenuBar IsNot Nothing Then
            newMenuBar.Caption = "Mailverschiebung"

            For i = 0 To 3
                ButtonControl = newMenuBar.Controls.Add
                ButtonControl.Caption = "zeichen" & i
                ButtonControl.Tag = "zeichen" & i
                AddHandler ButtonControl.Click, AddressOf ButtonControl_Click
                ButtonControls.Add(ButtonControl)
            Next
        End If
    End Sub

    Sub ButtonControl_Click()
        MsgBox("Läuft")
    End Sub

    Private Sub ThisAddIn_Shutdown() Handles Me.Shutdown

    End Sub

End Class

Имейте в виду, что панели команд устарели и не должны использоваться для настройки пользовательского интерфейса Outlook. Вместо этого вы должны использовать Fluent UI (также известный как Ribbon UI). Дополнительные сведения о новом пользовательском интерфейсе см. В следующей серии статей:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...