Como: Adicionar ícones de personalizar a barra de ferramentas e itens de menu
Se aplica a |
---|
As informações contidas neste tópico se aplicam apenas às especificado Ferramentas do Visual Studio para o Office projetos e as versões do Microsoft Office. Tipo de Projeto
Versão do Microsoft Office
For more information, see Recursos disponíveis pelo aplicativo e o tipo de projeto. |
Este exemplo adiciona um ícone a um botão da barra de comando em um menu Personalizar no Microsoft Office Outlook.O ícone está incluído nos recursos do projeto.Para obter mais informações sobre recursos do projeto, consulte Adicionando e Editando recursos (Visual C#) e Como: Adicionar ou remover recursos.
Para adicionar ícones Personalizars
Adicione código para o Outlook arquivo do projeto ThisAddIn.vb ou ThisAddIn.cs para criar CommandBarPopup e CommandBarButton controles que representam o menu Personalizar e o comando de menu.Esse código verifica se o menu existe.Se existir, este código remove o menu.Em seguida, adiciona o novo menu.
Private MenuBar As Office.CommandBar Private newMenuBar As Office.CommandBarPopup Private ButtonOne As Office.CommandBarButton Private menuTag As String = "AUniqueName" Private Sub ThisAddIn_Startup(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Startup RemoveMenubar() AddMenuBar() End Sub Private Sub AddMenuBar() Try MenuBar = Me.Application.ActiveExplorer().CommandBars.ActiveMenuBar newMenuBar = menuBar.Controls.Add( _ Office.MsoControlType.msoControlPopup, _ Temporary:=False) If newMenuBar IsNot Nothing Then newMenuBar.Caption = "See New Icon" newMenuBar.Tag = menuTag buttonOne = newMenuBar.Controls.Add( _ Office.MsoControlType.msoControlButton, _ Before:=1, Temporary:=False) With buttonOne .Style = Office.MsoButtonStyle _ .msoButtonIconAndCaption .Caption = "New Icon" .FaceId = 65 .Tag = "c123" .Picture = getImage() End With newMenuBar.Visible = True End If Catch Ex As Exception MessageBox.Show(Ex.Message) End Try End Sub Private Sub RemoveMenubar() Try ' If the menu already exists, remove it. Dim foundMenu As Office.CommandBarPopup = _ Me.Application.ActiveExplorer().CommandBars.ActiveMenuBar. _ FindControl(Office.MsoControlType.msoControlPopup, _ System.Type.Missing, menuTag, True, True) If foundMenu IsNot Nothing Then foundMenu.Delete(True) End If Catch Ex As Exception MessageBox.Show(Ex.Message) End Try End Sub
private Office.CommandBar menuBar; private Office.CommandBarPopup newMenuBar; private Office.CommandBarButton buttonOne; private string menuTag = "AUniqueTag"; private void ThisAddIn_Startup(object sender, System.EventArgs e) { RemoveMenubar(); AddMenuBar(); } private void AddMenuBar() { try { menuBar = this.Application.ActiveExplorer().CommandBars.ActiveMenuBar; newMenuBar = (Office.CommandBarPopup)menuBar.Controls.Add( Office.MsoControlType.msoControlPopup, missing, missing, missing, false); if (newMenuBar != null) { newMenuBar.Caption = "See New Icon"; newMenuBar.Tag = menuTag; buttonOne = (Office.CommandBarButton) newMenuBar.Controls. Add(Office.MsoControlType.msoControlButton, System. Type.Missing, System.Type.Missing, 1, true); buttonOne.Style = Office.MsoButtonStyle. msoButtonIconAndCaption; buttonOne.Caption = "New Icon"; buttonOne.FaceId = 65; buttonOne.Tag = "c123"; buttonOne.Picture = getImage(); newMenuBar.Visible = true; } } catch (Exception ex) { MessageBox.Show(ex.Message); } } private void RemoveMenubar() { // If the menu already exists, remove it. try { Office.CommandBarPopup foundMenu = (Office.CommandBarPopup) this.Application.ActiveExplorer().CommandBars.ActiveMenuBar. FindControl(Office.MsoControlType.msoControlPopup, System.Type.Missing, menuTag, true, true); if (foundMenu != null) { foundMenu.Delete(true); } } catch (Exception ex) { MessageBox.Show(ex.Message); } }
Criar uma Novo classe chamada ConvertImage.Essa classe usa System.Forms.Axhost para converter um arquivo de Image em um tipo de imagem que pode ser aplicado ao item de menu.
<Microsoft.VisualStudio.Tools.Applications.Runtime.StartupObjectAttribute(0), _ Global.System.Security.Permissions.PermissionSetAttribute _ (Global.System.Security.Permissions.SecurityAction.Demand, Name:="FullTrust")> _ Public Class ConvertImage Inherits System.Windows.Forms.AxHost Public Sub New() MyBase.New("59EE46BA-677D-4d20-BF10-8D8067CB8B32") End Sub Public Shared Function Convert(ByVal Image _ As System.Drawing.Image) As stdole.IPictureDisp Convert = GetIPictureFromPicture(Image) End Function End Class
sealed public class ConvertImage : System.Windows.Forms.AxHost { private ConvertImage() : base(null) { } public static stdole.IPictureDisp Convert (System.Drawing.Image image) { return (stdole.IPictureDisp)System. Windows.Forms.AxHost .GetIPictureDispFromPicture(image); } }
Adicione um método para converter o arquivo de ícone em um arquivo de Image adicionando-o a um ImageList.Esse código envia o arquivo Image para o método ConvertImage.Convert que você criou e, em seguida, retorna o arquivo para o chamador.
Private Function getImage() As stdole.IPictureDisp Dim tempImage As stdole.IPictureDisp = Nothing Try Dim newIcon As Icon = My.Resources.Icon1 Dim newImageList As New ImageList newImageList.Images.Add(newIcon) tempImage = ConvertImage.Convert(newImageList.Images(0)) Catch ex As Exception MessageBox.Show(ex.Message) End Try Return tempImage End Function
private stdole.IPictureDisp getImage() { stdole.IPictureDisp tempImage = null; try { System.Drawing.Icon newIcon = Properties.Resources.Icon1; ImageList newImageList = new ImageList(); newImageList.Images.Add(newIcon); tempImage = ConvertImage.Convert(newImageList.Images[0]); } catch (Exception ex) { MessageBox.Show(ex.Message); } return tempImage; }
Compilando o código
Este exemplo requer:
- Um ícone chamado Icon1 nos recursos do projeto.
Consulte também
Tarefas
Como: Adicionar barras de ferramentas Personalizars e itens de barra de ferramentas ao Outlook
Como: Adicionar menus Personalizars e itens de menu ao Outlook
Como: Adicionar ou remover recursos
Como: Especifique um ícone de aplicativo (Visual Basic, C#)
Conceitos
Visão geral do modelo de objeto do Outlook