RikardG
Posts: 95
Joined: 2009-10-19
|
Hi,
I have started to use Outlook 2013 Preview and the ItemContextMenuDisplay event does no longer fire. I created a very simple sample project which just displays a message box when the event fires. In Outlook 2010, the event fires as expected, but in Outlook 2013 it does NOT fire.
Is this a bug or is the event deprecated in Outlook 2013?
I have upgraded my project to run version 7.0.4023 of Add-in Express.
Regards |
|
Andrei Smolin
Add-in Express team
Posts: 18719
Joined: 2006-05-11
|
Hello,
Yes, you are right, in Outlook 2013 the following events do not work:
AttachmentContextMenuDisplay
ViewContextMenuDisplay
ItemContextMenuDisplay
FolderContextMenuDisplay
StoreContextMenuDisplay
ShortcutContextMenuDisplay
ContextMenuClose
All these events were marked as hidden in the Outlook 2010 Object Model:
http://msdn.microsoft.com/en-us/library/office/ee836188.aspx#OL14DevRef_ChangesSince2007
The current Outlook 2013 documentation does not contain these events either:
http://msdn.microsoft.com/en-us/library/jj236930%28v=office.15%29.aspx
But as far as I know the events were not publicly declared deprecated and not working. Office 2013 is still on the Consumer Preview stage and is still very raw in some parts. I am sure Microsoft will publish a far more stable RTM version in the coming months and we will be able re-check the issue.
Andrei Smolin
Add-in Express Team Leader |
|
RikardG
Posts: 95
Joined: 2009-10-19
|
OK, I understand.
I use the event for displaying/hiding custom context menu buttons depending on current item. Is there another solution for this? I may have to release my product before the Outlook 2013 RTM has been released and it would be nice to have a solution right now.
Regards |
|
Andrei Smolin
Add-in Express team
Posts: 18719
Joined: 2006-05-11
|
You need to handle the ADXRibbonButton.PropertyChanging event for the context menu buttons in this way:
- check if e.PropertyType returns an appropriate value (e.g. ADXRibbonControlPropertyType.Visible or ADXRibbonControlPropertyType.Enabled)
- check if e.Context returns an object of the appropriate type (I suppose you need Outlook.Selection)
- check if the item(s) in the Selection meets your requirements
- set e.Value to a required value
private void adxRibbonButton1_PropertyChanging(object sender, ADXRibbonPropertyChangingEventArgs e)
{
System.Diagnostics.Debug.WriteLine("### PropertyType is " + e.PropertyType.ToString());
if (e.PropertyType == ADXRibbonControlPropertyType.Enabled)
{
System.Diagnostics.Debug.WriteLine("### Context is " + Microsoft.VisualBasic.Information.TypeName(e.Context));
if (e.Context is Outlook.Selection)
{
Outlook.Selection selection = e.Context as Outlook.Selection;
object item = selection[1];
if (item is Outlook.MailItem)
{
Outlook._MailItem mail = item as Outlook._MailItem;
Outlook.Attachments attachments = mail.Attachments;
System.Diagnostics.Debug.WriteLine("### Value is " + e.Value.ToString());
if (attachments.Count > 0)
e.Value = false;
Marshal.ReleaseComObject(attachments);
}
Marshal.ReleaseComObject(item);
}
}
}
Andrei Smolin
Add-in Express Team Leader |
|