2014-11-12 2 views
0

Я создал кнопку ленты для Outlook 2013 с использованием C#.Outlook 2013 Addin: изменение кнопки ленты Изображение при нажатии кнопки с помощью C#

И я также установил изображение для ленты.

Теперь при нажатии кнопки «Лента» я хочу изменить изображение ленты.

Можно ли достичь этого с помощью C#.?

ответ

1

Не знаете, как именно вы хотите, чтобы он работал, но это могло бы сделать трюк.

bool callback {get;set} 

public Bitmap GetImage(IRibbonControl control) 
    { 
     switch (control.Id) 
     { 

      case "FooButtonId": 
      { 
       if(callback== true){ 
        callback = false; 
        return new Bitmap(Properties.Resources.someimage1); 
       }else 
        callback =true; 
        return new Bitmap(Properties.Resources.someimage2); 
       } 
      } 
     } 
    } 
0

Этот вопрос составляет 3 года, но помог мне продвинуться дальше, и я хочу поделиться им с вами. Во-первых, я сделал это на VB.net, поэтому мой код будет в VB.net. Есть некоторые онлайн-инструменты для преобразования кода в C#. Во-вторых, я использовал кнопку Toggle вместо кнопки Simple. В-третьих, я использовал OnOff в качестве настройки проекта, чтобы сохранить состояние кнопки Toggle.

Шаг 1: Файл Ribbon.xml, код для размещения кнопки переключения на ленте. Предполагая, что вы уже установили теги tab и group в файл.

<toggleButton id="onoffTBTN" label="ON/OFF" showImage="true" onAction="OnOffToggle" getImage="OnOffImage"/> 

Шаг 2: Ribbon.vb файл, код, чтобы изменить настройку OnOff, основываясь на положении тумблера (нажата или нет) и силы, чтобы аннулировать таможенный контроль

Public Sub OnOffToggle(ByVal control As Office.IRibbonControl, ByVal pressed As Boolean) 
    My.Settings.OnOff = pressed 
    My.Settings.Save() 
    myRibbon.InvalidateControl("onoffTBTN") 
End Sub 

Шаг 3: Лента .vb, читает настройку OnOff и соответственно изменяет изображение. Имейте в виду, что ваши изображения должны быть добавлены в ресурсы вашего проекта, чтобы использовать их по адресу My.Resources.*. Я использовал png-файлы, которые поддерживают прозрачные пиксели. Эта функция вызывается в двух случаях: сначала при запуске Outlook и секундах, когда нажата кнопка переключения, и, в частности, с командой myRibbon.InvalidateControl("onoffTBTN").

Public Function OnOffImage(ByVal control As Office.IRibbonControl) As Drawing.Bitmap 
    Dim onoff As Boolean = My.Settings.OnOff 
    Select Case control.Id 
     Case "onoffTBTN" 
      If onoff = True Then 
       Return New Drawing.Bitmap(My.Resources._on) 
      Else 
       Return New Drawing.Bitmap(My.Resources.off) 
      End If 
    End Select 
End Function 

Единственное странное поведение, когда установка OnOff было установлено значение TRUE. Отобразится правильное изображение, но кнопка Toggle выглядит не нажатой. Вам нужно дважды щелкнуть, чтобы установить для параметра OnOff значение False.

Смежные вопросы