首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >VS 2013 SDK:如何设置CommandBarButton图片?

VS 2013 SDK:如何设置CommandBarButton图片?
EN

Stack Overflow用户
提问于 2015-07-09 17:58:11
回答 2查看 368关注 0票数 0

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

以下是我试图设置的图像:

这就是我正在使用的代码,我遗漏了什么或者做错了什么?

代码语言:javascript
复制
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

+

代码语言:javascript
复制
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
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-07-10 11:27:45

如果要创建包,则应该使用.vsct文件创建用户界面,该文件允许您声明命令图片。请参阅如何向工具栏上的命令添加图标

票数 1
EN

Stack Overflow用户

发布于 2015-07-09 18:18:53

解决方案非常简单,应该将CommandBarButtonCommandBarButton属性设置为MsoButtonStyle.msoButtonIconAndCaption而不是MsoButtonStyle.msoButtonIcon

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31324924

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档