Как переопределить обработчики событий встроенных элементов управления и их видимость в VSTO Outlook addin 2010

#outlook

#outlook

Вопрос:

Я создал пользовательскую группу с кнопкой переключения на встроенной вкладке «Назначение вкладки», где нажатие на кнопку откроет новую winform.

Только после продолжения работы с этой формой на экране назначения должна быть включена кнопка «Сохранить и закрыть».

Но я не могу отключить встроенные элементы управления, я попытался, как показано ниже

     <?xml version="1.0" encoding="UTF-8"?>
    <customUI xmlns="http://schemas.microsoft.com/office/2009/07/customui" onLoad="Ribbon_Load">
      <ribbon>
        <tabs>
          <tab idMso="TabAppointment">
            <group idMso ="GroupActions">
              <button idMso="SaveAndClose" getEnabled="GetEnabled"/>
            </group>
            <group id="GroupRBS" insertBeforeMso="GroupActions" label="RBS">
              <toggleButton id="btnBookRoom" label ="Add Room" supertip ="Room booking option for an appointment" imageMso="AddRoom" onAction="CallRBS" size="large" getEnabled="GetEnabled" />
            </group>
          </tab>
        </tabs>
      </ribbon>
    </customUI>
  

Я создал метод обратного вызова ‘getEnabled’ в классе ribbon, но он запускается только для пользовательских групповых элементов управления, не можем ли мы переопределить атрибуты встроенного элемента управления?

Я могу скрывать встроенные группы, но не могу скрыть конкретный встроенный элемент управления внутри встроенной группы, есть ли какой-либо способ сделать это?

Пожалуйста, помогите мне получить новое решение

Ответ №1:

К сожалению, вы не можете изменить включенное состояние встроенных кнопок ленты. Только на пользовательских кнопках ленты, которые вы добавляете сами.

Но есть пара решений, которые вы могли бы попробовать:

  1. Модально отобразите диалоговое окно WinForm, чтобы убедиться, что пользователь должен завершить его, прежде чем продолжить

  2. Обработайте Microsoft.Офис.Взаимодействие.Outlook.AppointmentItemClass.Напишите событие. ItemEvents_10_WriteEventHandler имеет параметр отмены ссылки, который вы можете установить в значение true, чтобы остановить сохранение встречи.

    ((ItemEvents_10_Event)appointmentItem).Write = AppointmentItem_Write;

Комментарии:

1. Большое спасибо за решение