在C#回答@Carlos Quintero in 另一个问题,然后再给他读C#文章在这个链接中之后,我试着按照上面提到的步骤设置菜单按钮的CommandBarButton.Picture,但是,当我这样做时,任何图像都会出现,包不会抛出任何错误,只是图像没有显示(可能没有正确加载,还是格式不正确?)
以下是我试图设置的图像:



这就是我正在使用的代码,我遗漏了什么或者做错了什么?
Friend Sub CreateMenu(ByVal dte As EnvDTE80.DTE2)
Dim objImageToPictureDispConverter As ImageToPictureDispConverter = Nothing
Dim objImage As System.Drawing.Image = Nothing
Dim objIPictureDisp As stdole.IPictureDisp = Nothing
objImage = System.Drawing.Image.FromFile("C:\path to resources...\Menu_Tag_Green.png")
objImageToPictureDispConverter = New ImageToPictureDispConverter
objIPictureDisp = objImageToPictureDispConverter.GetIPictureDispFromImage(objImage)
objImageToPictureDispConverter.Dispose()
' Get a reference to the context menu of code window.
Dim codeWindowCommandBar As CommandBar =
DirectCast(dte.CommandBars, CommandBars)("Code Window")
' Add a popup command bar.
Dim mainPopup As CommandBarPopup =
DirectCast(codeWindowCommandBar.Controls.Add(MsoControlType.msoControlPopup,
Type.Missing, Type.Missing,
Type.Missing, Type.Missing), CommandBarPopup)
mainPopup.Caption = "..."
' Add controls to the popup command bar.
BtMakeCodeExample =
DirectCast(mainPopup.Controls.Add(MsoControlType.msoControlButton,
Missing.Value, Missing.Value,
1, True), CommandBarButton)
BtMakeCodeExample.Caption = "My Button"
BtMakeCodeExample.Style = MsoButtonStyle.msoButtonIcon
BtMakeCodeExample.Picture = objIPictureDisp
End Sub+
Public Class ImageToPictureDispConverter : Inherits System.Windows.Forms.AxHost
Public Sub New()
MyBase.New("{63109182-966B-4e3c-A8B2-8BC4A88D221C}")
End Sub
Public Function GetIPictureDispFromImage(ByVal objImage As System.Drawing.Image) As stdole.IPictureDisp
Dim objPicture As stdole.IPictureDisp
objPicture = CType(System.Windows.Forms.AxHost.GetIPictureDispFromPicture(objImage), stdole.IPictureDisp)
Return objPicture
End Function
End Class发布于 2015-07-10 11:27:45
如果要创建包,则应该使用.vsct文件创建用户界面,该文件允许您声明命令图片。请参阅如何向工具栏上的命令添加图标
发布于 2015-07-09 18:18:53
解决方案非常简单,应该将CommandBarButton的CommandBarButton属性设置为MsoButtonStyle.msoButtonIconAndCaption而不是MsoButtonStyle.msoButtonIcon。
https://stackoverflow.com/questions/31324924
复制相似问题