Cómo: Agregar menús y elementos de menú personalizados a Outlook
En este ejemplo se crea un menú en Microsoft Office Outlook. El menú, que contiene un elemento, aparece en la parte superior de la aplicación. Cuando hace clic en el elemento de menú, el código muestra un mensaje que indica el título del elemento de menú.
Se aplica a: la información de este tema se aplica a los proyectos de nivel de aplicación para Outlook 2007. Para obtener más información, vea Características disponibles por aplicación y tipo de proyecto de Office.
Dispone de una demostración en vídeo relacionada en How Do I: Customize Outlook Item Context Menus?.
Ejemplo
Private menuBar As Office.CommandBar
Private newMenuBar As Office.CommandBarPopup
Private buttonOne As Office.CommandBarButton
Private menuTag As String = "A unique tag"
Private Sub ThisApplication_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 = "New Menu"
newMenuBar.Tag = menuTag
buttonOne = newMenuBar.Controls.Add( _
Office.MsoControlType.msoControlButton, _
Before:=1, Temporary:=True)
With buttonOne
.Style = Office.MsoButtonStyle.msoButtonIconAndCaption
.Caption = "Button One"
.FaceId = 65
.Tag = "c123"
End With
AddHandler buttonOne.Click, AddressOf ButtonOne_Click
newMenuBar.Visible = True
End If
Catch Ex As Exception
MsgBox(Ex.Message)
End Try
End Sub
Public Sub ButtonOne_Click(ByVal buttonControl As Office. _
CommandBarButton, ByRef Cancel As Boolean)
MsgBox("You clicked: " & buttonControl.Caption, _
"Custom Menu", vbOK)
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
MsgBox(Ex.Message)
End Try
End Sub
private Office.CommandBar menuBar;
private Office.CommandBarPopup newMenuBar;
private Office.CommandBarButton buttonOne;
private string menuTag = "A unique tag";
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 = "New Menu";
newMenuBar.Tag = menuTag;
buttonOne = (Office.CommandBarButton)newMenuBar.Controls.
Add(Office.MsoControlType.msoControlButton, missing,
missing, 1, true);
buttonOne.Style = Office.MsoButtonStyle.
msoButtonIconAndCaption;
buttonOne.Caption = "Button One";
buttonOne.FaceId = 65;
buttonOne.Tag = "c123";
buttonOne.Click += new
Office._CommandBarButtonEvents_ClickEventHandler(
buttonOne_Click);
newMenuBar.Visible = true;
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
private void buttonOne_Click(Office.CommandBarButton ctrl,
ref bool cancel)
{
MessageBox.Show("You clicked: " + ctrl.Caption,
"Custom Menu", MessageBoxButtons.OK);
}
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,
missing, menuTag, true, true);
if (foundMenu != null)
{
foundMenu.Delete(true);
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
Programación eficaz
Declare las variables de la barra de comandos en el nivel de clase. Si las declara dentro de un método, saldrán del ámbito en cuanto el método termine de ejecutarse y el recolector de elementos no utilizados sea capaz de reasignar la memoria.
Vea también
Tareas
Cómo: Crear barras de herramientas de Office
Cómo: Crear barras de herramientas de Office
Cómo: Agregar comandos a menús contextuales en Excel
Otros recursos
Información general sobre el modelo de objetos de Outlook
Personalización de la interfaz de usuario de Office
Diseñar y crear soluciones de Office
Historial de cambios
Fecha |
Historial |
Motivo |
---|---|---|
Mayo de 2011 |
Se ha simplificado el ejemplo de código. |
Comentarios de los clientes. |