Outlook 2010 VSTO - стандартный значок Office в области формы - PullRequest
2 голосов
/ 16 августа 2011

Добавление кнопок, показывающих стандартные значки Outlook на ленте, довольно просто. Установите для свойства OfficeImageId кнопки известный идентификатор (например, «EncryptMessage»), и все готово. Полный список возможных значений приведен в Надстройка Office 2010: Галерея значков .

Теперь мой вопрос: могу ли я архивировать то же самое в области формы? Я имею в виду, например, добавить PictureBox, показывающий этот стандартный значок Office? Очевидно, что свойства OfficeImageId нет, но, возможно, кто-то знает обходной путь.

Ответы [ 2 ]

4 голосов
/ 16 августа 2011

Ссылка, которую вы указали, ведет на документ Word 2010.До сих пор я использовал документ Excel 2007 с расширением ленты, на котором показаны все встроенные значки («Надстройка системы Office 2007: Галерея значков» в разделе «Что загружают другие»). В этой книге вы можете нажать на значоки форма VBA показывает смело значок 16x16 и 32x32.

Это просто форма VBA с двумя графическими полями. Код выглядит следующим образом:

   Sub OnAction(control As IRibbonControl, id As String, index As Integer)
    If (control.Tag = "large") Then
        id = Strings.Mid(id, 3)
    End If

    Dim form As New ControlInfoForm
    form.nameX.Caption = "imageMso: " & id
    Set form.Image1.Picture = Application.CommandBars.GetImageMso(id, 16, 16)
    Set form.Image2.Picture = Application.CommandBars.GetImageMso(id, 32, 32)
    form.Show
End Sub

Надеюсь, это поможетвам, чтобы получить изображение.

0 голосов
/ 12 июня 2019

Чтобы завершить вышеупомянутое сообщение с этим сообщением на форуме MSDN , вот ответ VB.Net:

Получите расширение IPictureDisp

Dim MyMso As String = "FileFind"
Dim MyIPicture As stdole.IPictureDisp = Globals.ThisAddIn.Application.CommandBars.GetImageMso(MyMso, 16, 16)

преобразовать в Drawing.Image

<System.Runtime.CompilerServices.Extension()>    
Function GetImage(MyIPicture As stdole.IPictureDisp) As Drawing.Image
    If CType(MyIPicture.Type, Integer) = 1 then
        Return = Drawing.Image.FromHbitmap(MyIPicture.Handle, MyIPicture.hPal)
    else
        Throw New ArgumentException("Image not supported.")
    End If
End Function

Назначить элементу управления

Dim MyButton As New Button
MyButton.Image = MyIPicture.GetImage

Примечание: я понятия не имею, почему требуется If CType(MyIPicture.Type, Integer) = 1.Любое понимание приветствуется!Кроме того, тот же пост относится к System.Windows.Forms.AxHost, но, похоже, нигде его не использует?

...