如何:创建 Office 工具栏
此示例在 Microsoft Office Outlook 中创建一个工具栏。 这个包含两个按钮的工具栏将出现在应用程序的顶部。 单击按钮时,代码会显示一条显示按钮标题的消息。
**适用于:**本主题中的信息适用于以下应用程序的应用程序级项目:InfoPath 2007、Outlook 2007、Project 2007 和 Visio 2007。有关更多信息,请参见按 Office 应用程序和项目类型提供的功能。
尽管这是特定于 Outlook 的示例,但用于创建工具栏的这部分代码可用于为上面列出的任何应用程序创建工具栏。
示例
Dim newToolBar As Office.CommandBar
Dim firstButton As Office.CommandBarButton
Dim secondButton As Office.CommandBarButton
Dim selectExplorers As Outlook.Explorers
Private Sub ThisAddIn_Startup(ByVal sender As Object, _
ByVal e As System.EventArgs) Handles Me.Startup
selectExplorers = Me.Application.Explorers()
AddHandler selectExplorers.NewExplorer, AddressOf _
Me.NewExplorer_Event
AddToolbar()
End Sub
Private Sub NewExplorer_Event(ByVal new_Explorer _
As Outlook.Explorer)
new_Explorer.Activate()
newToolBar = Nothing
Call Me.AddToolbar()
End Sub
Private Sub AddToolbar()
Dim button_1 As Office.CommandBarButton
Dim button_2 As Office.CommandBarButton
If newToolBar Is Nothing Then
Dim cmdBars As Office.CommandBars = _
Me.Application.ActiveExplorer().CommandBars
newToolBar = cmdBars.Add("NewToolBar", _
Office.MsoBarPosition.msoBarTop, False, True)
End If
Try
button_1 = CType(newToolBar.Controls.Add(1), _
Office.CommandBarButton)
With button_1
.Style = Office.MsoButtonStyle.msoButtonCaption
.Caption = "Button 1"
.Tag = "Button1"
End With
If Me.firstButton Is Nothing Then
Me.firstButton = button_1
AddHandler firstButton.Click, AddressOf ButtonClick
End If
button_2 = CType(newToolBar.Controls.Add(1), _
Office.CommandBarButton)
With button_2
.Style = Office.MsoButtonStyle.msoButtonCaption
.Caption = "Button 2"
.Tag = "Button2"
End With
If Me.secondButton Is Nothing Then
Me.secondButton = button_2
AddHandler secondButton.Click, AddressOf ButtonClick
End If
newToolBar.Visible = True
Catch ex As Exception
MsgBox(ex.Message)
End Try
End Sub
Private Sub ButtonClick(ByVal ctrl As Office.CommandBarButton, _
ByRef Cancel As Boolean)
MsgBox("You clicked: " + ctrl.Caption)
End Sub
Office.CommandBar newToolBar;
Office.CommandBarButton firstButton;
Office.CommandBarButton secondButton;
Outlook.Explorers selectExplorers;
private void ThisAddIn_Startup(object sender, System.EventArgs e)
{
selectExplorers = this.Application.Explorers;
selectExplorers.NewExplorer += new Outlook
.ExplorersEvents_NewExplorerEventHandler(newExplorer_Event);
AddToolbar();
}
private void newExplorer_Event(Outlook.Explorer new_Explorer)
{
((Outlook._Explorer)new_Explorer).Activate();
newToolBar = null;
AddToolbar();
}
private void AddToolbar()
{
if (newToolBar == null)
{
Office.CommandBars cmdBars =
this.Application.ActiveExplorer().CommandBars;
newToolBar = cmdBars.Add("NewToolBar",
Office.MsoBarPosition.msoBarTop, false, true);
}
try
{
Office.CommandBarButton button_1 =
(Office.CommandBarButton)newToolBar.Controls
.Add(1, missing, missing, missing, missing);
button_1.Style = Office
.MsoButtonStyle.msoButtonCaption;
button_1.Caption = "Button 1";
button_1.Tag = "Button1";
if (this.firstButton == null)
{
this.firstButton = button_1;
firstButton.Click += new Office.
_CommandBarButtonEvents_ClickEventHandler
(ButtonClick);
}
Office.CommandBarButton button_2 = (Office
.CommandBarButton)newToolBar.Controls.Add
(1, missing, missing, missing, missing);
button_2.Style = Office
.MsoButtonStyle.msoButtonCaption;
button_2.Caption = "Button 2";
button_2.Tag = "Button2";
newToolBar.Visible = true;
if (this.secondButton == null)
{
this.secondButton = button_2;
secondButton.Click += new Office.
_CommandBarButtonEvents_ClickEventHandler
(ButtonClick);
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
private void ButtonClick(Office.CommandBarButton ctrl,
ref bool cancel)
{
MessageBox.Show("You clicked: " + ctrl.Caption);
}
可靠编程
请在类级别,而不要在调用变量的方法中声明命令栏变量。 这样可以确保只要应用程序运行,命令栏变量便保持在范围内。 否则,此项便会被垃圾回收移除,而事件处理程序代码也将无法运行。