Outlook VSTO:取消约会项目的发送外事件

Outlook VSTO:取消约会项目的发送外事件,outlook,outlook-addin,Outlook,Outlook Addin,我正在创建一个Outlook VSTO,允许用户在新约会表单的附加表单区域中输入信息。 发送约会时,我希望捕获“发送”事件,并对用户提供的数据执行一些检查。当此数据正常时,可以发送约会,否则必须取消发送操作 我的代码如下: Dim apptItem as Outlook.AppointmentItem Private Sub Test_FormRegionShowing(ByVal sender As Object, ByVal e As System.EventArgs) Handles M

我正在创建一个Outlook VSTO,允许用户在新约会表单的附加表单区域中输入信息。 发送约会时,我希望捕获“发送”事件,并对用户提供的数据执行一些检查。当此数据正常时,可以发送约会,否则必须取消发送操作

我的代码如下:

Dim apptItem as Outlook.AppointmentItem

Private Sub Test_FormRegionShowing(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.FormRegionShowing
        apptItem = OutlookItem
        AddHandler apptItem.Send, AddressOf sendAppt
End Sub



    Private Sub sendAppt()
        If some_test = False then

              else
                Cancel=True
        End If
End Sub
Private sub SendAppt (ByRef Cancel as Boolean)
    If [some test] = False Then
        Cancel = True
    End If
End Sub

如何将事件参数传递给SendAppt函数,以便取消例行程序并阻止发送会议?

约会本身从未发送-Outlook创建一个全新的
MeetingItem
对象并发送它。您需要使用
应用程序.ItemSend
事件并检查Item参数是否指向
MeetingItem
对象。然后,您可以使用
MeetingItem.GetAssociatedAppointment
检查它对应的约会

答案很简单,解决方法如下:

Dim apptItem as Outlook.AppointmentItem

Private Sub Test_FormRegionShowing(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.FormRegionShowing
        apptItem = OutlookItem
        AddHandler apptItem.Send, AddressOf sendAppt
End Sub



    Private Sub sendAppt()
        If some_test = False then

              else
                Cancel=True
        End If
End Sub
Private sub SendAppt (ByRef Cancel as Boolean)
    If [some test] = False Then
        Cancel = True
    End If
End Sub
这将取消发送例程,并阻止发送会议项目