Garry Lowther
Posts: 54
Joined: 2009-02-22
|
I have a function which is called when the user clicks either a toolbar button in Outlook 2007 or earlier, and also from a ribbon button in Outlook 2007 or 2010. This function returns True if the button click is from a button on the main explorer view:
Public Function isExplorerView() As Boolean
Dim sDebug As String = "isExplorerView" & vbCrLf
Dim bExplorerView As Boolean = True
Try
Dim olInspector As Outlook.Inspector = TryCast(m_OutlookApplication.ActiveInspector(), Outlook.Inspector)
If olInspector IsNot Nothing Then
If TypeOf olInspector.CurrentItem Is Outlook.MailItem Then
bExplorerView = False
End If
End If
' Else must be true?
Catch ex As Exception
End Try
sDebug &= vbCrLf & "bExplorerView=" & bExplorerView
'MsgBox(sDebug)
Return bExplorerView
End Function
The problem is that this technique breaks down i.e. does not work for Outlook 2010 when clicked from the main explorer ribbon.
What is the best way to address this? |
|
Eugene Astafiev
Guest
|
Hi Garry,
The approach you currently use for detecting the active window where the button was clicked is not right. Instead, please use the Context property of the control parameter passed to the button Click event handler:
Outlook.Explorer explorer = control.Context as Outlook.Explorer;
if (explorer != null) System.Windows.Forms.MessageBox.Show("explorer");
Outlook.Inspector inspector = control.Context as Outlook.Inspector;
if (inspector != null) System.Windows.Forms.MessageBox.Show("inspector");
Please separate command bar and ribbon controls in your add-in project. Note, you can use the UseForRibbon property of your command bar. |
|