Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Outlook 2010 VSTO-表单区域中的标准Office图标_C#_Icons_Vsto_Outlook Addin - Fatal编程技术网

C# Outlook 2010 VSTO-表单区域中的标准Office图标

C# Outlook 2010 VSTO-表单区域中的标准Office图标,c#,icons,vsto,outlook-addin,C#,Icons,Vsto,Outlook Addin,将显示标准Outlook图标的按钮添加到功能区非常简单。将按钮的属性OfficeImageId设置为已知ID(例如“EncryptMessage”),就完成了。有关可能值的完整列表,请参阅 现在我的问题是,我可以在表单区域中归档相同的内容吗?我的意思是,例如,添加一个显示标准办公室图标的图片盒?显然没有OfficeImageId属性,但可能有人知道解决方法。您提供的链接指向Word 2010文档。到目前为止,我一直在使用Excel 2007文档,该文档带有一个功能区扩展,显示所有内置图标(“其他

将显示标准Outlook图标的按钮添加到功能区非常简单。将按钮的属性OfficeImageId设置为已知ID(例如“EncryptMessage”),就完成了。有关可能值的完整列表,请参阅


现在我的问题是,我可以在表单区域中归档相同的内容吗?我的意思是,例如,添加一个显示标准办公室图标的图片盒?显然没有OfficeImageId属性,但可能有人知道解决方法。

您提供的链接指向Word 2010文档。到目前为止,我一直在使用Excel 2007文档,该文档带有一个功能区扩展,显示所有内置图标(“其他下载内容”部分中的“2007 Office System插件:图标库”)。在该工作簿中,您可以单击图标,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

我希望这有助于您获取图像。

要完成上述文章,请使用VB.Net提供以下答案:

获取
IPictureDisp

Dim MyMso As String = "FileFind"
Dim MyIPicture As stdole.IPictureDisp = Globals.ThisAddIn.Application.CommandBars.GetImageMso(MyMso, 16, 16)
转换为
图形的扩展。图像

<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

注意:我不知道为什么
如果CType(myipacture.Type,Integer)=1
是必需的。欢迎提供任何见解。!此外,同一篇文章提到了
System.Windows.Forms.AxHost
,但似乎没有在任何地方使用它?

谢谢,这看起来很有希望。我今天下午会试试。这就成功了。非常感谢。我也偶然发现了这一点。他们在那里讨论了几乎相同的事情,但除此之外on someone为IPictureDisp图像提供了一种方便的转换方法(以防有人也需要)。你知道为什么在MSDN论坛上,如果CType(myipacture.Type,Integer)=1,他们会执行
Dim MyButton As New Button
MyButton.Image = MyIPicture.GetImage