【问题标题】:Outlook context menu with multiple calendar events selected选择了多个日历事件的 Outlook 上下文菜单
【发布时间】:2018-04-11 00:47:19
【问题描述】:

我正在 VS2017 中编写一个 Outlook 插件。我需要在选择 1 个或多个日历事件时出现上下文菜单。当使用以下 XML 选择单个日历事件时,我可以获得一个上下文菜单:

<customUI onLoad="Ribbon_Load" xmlns="http://schemas.microsoft.com/office/2009/07/customui" loadImage="GetImage">
  <contextMenus>    
    <contextMenu idMso="ContextMenuCalendarItem">
        <button id="MyContextMenuCalendarItem"
            label="Copy To Google Calendar"
            image="Google_Calendar_Logo.png"
            onAction="CopyToGoogleCalendar_Click"/>
    </contextMenu>  
    </contextMenus>     
</customUI>

如果我使用IDMSO“ Context -MenumultipleItems”,则选择任何类型的多个(电子邮件,日历等)时,将出现上下文菜单。我无法为选择了多个日历事件的上下文菜单找出正确的 idMso。

任何帮助将不胜感激。

【问题讨论】:

    标签: c# vsto outlook-addin


    【解决方案1】:

    事实证明,使用“ContextMenuMultipleItems”idMso 可以与添加的“getVisible”方法一起使用。我的 XML 现在看起来像:

    <?xml version="1.0" encoding="utf-8"?>
    <customUI onLoad="Ribbon_Load" xmlns="http://schemas.microsoft.com/office/2009/07/customui" loadImage="GetImage">
      <contextMenus>    
        <contextMenu idMso="ContextMenuCalendarItem">
            <button id="MyContextMenuCalendarItem"
                label="Copy To Google Calendar"
                            image="Google_Calendar_Logo.png"
                onAction="CopyToGoogleCalendar_Click"/>
        </contextMenu>  
        <contextMenu idMso="ContextMenuMultipleItems">
            <button id="MyContextMenuMultipleItems" 
                label="Copy To Google Calendar" 
                            image="Google_Calendar_Logo.png"
                            getVisible="ContextMenuMultipleItems_IsVisible"
                onAction="CopyToGoogleCalendar_Click"/>
        </contextMenu>   
        </contextMenus>     
    </customUI>
    

    ContextMenuMultipleItems_IsVisible 看起来像:

    public bool ContextMenuMultipleItems_IsVisible(Office.IRibbonControl control)
    {
        if (control.Context is Outlook.Selection)
        {
            Outlook.Selection selection = control.Context as Outlook.Selection;
            if (selection[1] is Outlook.AppointmentItem)
                return true;
        }
        return false;
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-01-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-22
      • 1970-01-01
      • 1970-01-01
      • 2012-01-23
      相关资源
      最近更新 更多