Como: Manter as informações de posição de barras de ferramentas personalizadas entre sessões do Outlook
Este exemplo demonstra uma maneira possível salvar e restaurar a posição de uma barra de ferramentas personalizada do Outlook. O código cria uma barra de ferramentas e salva a sua posição em um arquivo de configurações do usuário quando o usuário sai do Outlook. Reiniciar o Outlook recria a barra de ferramentas e define sua posição com base nas configurações salvas.
Aplicável a: As informações neste tópico se aplicam a projetos de nível de aplicativo para Outlook 2007. Para obter mais informações, consulte Recursos disponíveis pelo aplicativo do Office e o tipo de projeto.
Exemplo
Dim commandBar As Office.CommandBar
Dim WithEvents button As Office.CommandBarButton
Const TOOLBARNAME As String = "ExampleBar"
Const REGROOT As String = "Software\YourCompany\YourApp"
Dim WithEvents explorerEvents As Outlook.ExplorerEvents_10_Event
Dim explorer As Outlook.Explorer
Private Sub ThisAddIn_Startup(ByVal sender As Object, _
ByVal e As System.EventArgs) Handles Me.Startup
explorer = Me.Application.ActiveExplorer()
If (explorer IsNot Nothing) Then
commandBar = Me.Application.ActiveExplorer.CommandBars.Add( _
TOOLBARNAME, _
Office.MsoBarPosition.msoBarFloating, _
False, _
True)
button = TryCast(commandBar.Controls.Add( _
Office.MsoControlType.msoControlButton, _
System.Type.Missing, System.Type.Missing, _
1, True), Office.CommandBarButton)
button.Style = _
Microsoft.Office.Core.MsoButtonStyle.msoButtonCaption
button.Caption = "Button 1"
button.Tag = "newButton"
LoadCommandBarSettings()
End If
End Sub
Private Sub SaveCommandBarSettings()
MySettings.Default("CommandBarTop") = commandBar.Top
MySettings.Default("CommandBarLeft") = commandBar.Left
MySettings.Default("CommandBarVisible") = commandBar.Visible
MySettings.Default("CommandBarPosition") = CInt(commandBar.Position)
MySettings.Default("CommandBarRowIndex") = commandBar.RowIndex
MySettings.Default.Save()
End Sub
Private Sub LoadCommandBarSettings()
Dim position As Microsoft.Office.Core.MsoBarPosition = _
CType(MySettings.Default("CommandBarPosition"), _
Microsoft.Office.Core.MsoBarPosition)
Dim rowIndex As Integer = _
CInt(MySettings.Default("CommandBarRowIndex"))
commandBar.RowIndex = rowIndex
Dim top As Integer = _
CInt(MySettings.Default("CommandBarTop"))
commandBar.Top = _
CInt(IIf(top <> 0, top, _
System.Windows.Forms.Screen.PrimaryScreen.Bounds.Height / 2))
Dim left As Integer = _
CInt(MySettings.Default("CommandBarLeft"))
commandBar.Left = _
CInt(IIf(left <> 0, left, _
System.Windows.Forms.Screen.PrimaryScreen.Bounds.Width / 2))
Dim visible As Boolean = _
CBool(MySettings.Default("CommandBarVisible"))
commandBar.Visible = visible
End Sub
Private Sub Click(ByVal ctrl As _
Microsoft.Office.Core.CommandBarButton, _
ByRef cancelDefault As Boolean) Handles Button.Click
System.Windows.Forms.MessageBox.Show("Hello World!")
End Sub
Sub ThisAddIn_Close() Handles explorerEvents.Close
SaveCommandBarSettings()
End Sub
Office.CommandBar commandBar;
Office.CommandBarButton button;
private const string TOOLBARNAME = "ExampleBar";
private Outlook.Explorer explorer;
private void ThisAddIn_Startup(object sender, System.EventArgs e)
{
explorer = this.Application.ActiveExplorer();
if (explorer != null)
{
((Outlook.ExplorerEvents_10_Event)explorer).Close +=
new Microsoft.Office.Interop.Outlook.ExplorerEvents_10_CloseEventHandler(ThisAddIn_Close);
commandBar = this.Application.ActiveExplorer().CommandBars.Add(TOOLBARNAME,
Office.MsoBarPosition.msoBarFloating, false, true);
button = commandBar.Controls.Add(
Office.MsoControlType.msoControlButton,
System.Type.Missing, System.Type.Missing,
1, true) as Office.CommandBarButton;
button.Style =
Microsoft.Office.Core.MsoButtonStyle.msoButtonCaption;
button.Caption = "Button 1";
button.Tag = "newButton";
button.Click += new Microsoft.Office.Core.
_CommandBarButtonEvents_ClickEventHandler(button_Click);
LoadCommandBarSettings();
}
}
private void LoadCommandBarSettings()
{
Microsoft.Office.Core.MsoBarPosition position =
(Microsoft.Office.Core.MsoBarPosition)Properties.Settings
.Default["CommandBarPosition"];
commandBar.Position = position;
int rowIndex =
Convert.ToInt32(
Properties.Settings.Default["CommandBarRowIndex"]);
commandBar.RowIndex = rowIndex;
int top =
Convert.ToInt32(
Properties.Settings.Default["CommandBarTop"]);
commandBar.Top =
top != 0 ? top : System.Windows.Forms.Screen.PrimaryScreen.
Bounds.Height / 2;
int left =
Convert.ToInt32(
Properties.Settings.Default["CommandBarLeft"]);
commandBar.Left =
left != 0 ? left : System.Windows.Forms.Screen.PrimaryScreen.
Bounds.Width / 2;
bool visible = Convert.ToBoolean(
Properties.Settings.Default["CommandBarVisible"]);
commandBar.Visible = visible;
}
private void SaveCommandBarSettings()
{
Properties.Settings.Default["CommandBarTop"] = commandBar.Top;
Properties.Settings.Default["CommandBarLeft"] = commandBar.Left;
Properties.Settings.Default["CommandBarVisible"] =
commandBar.Visible;
Properties.Settings.Default["CommandBarPosition"] =
(int)commandBar.Position;
Properties.Settings.Default["CommandBarRowIndex"] =
commandBar.RowIndex;
Properties.Settings.Default.Save();
}
void button_Click(Microsoft.Office.Core.CommandBarButton Ctrl,
ref bool CancelDefault)
{
System.Windows.Forms.MessageBox.Show("Hello world!");
}
void ThisAddIn_Close()
{
SaveCommandBarSettings();
}
Compilando o código
This example requires:
Cinco configurações de usuário. Clique duas vezes no ícone Settings do projeto Propriedades (em C#) ou My Project (em Visual Basic) pasta e adicione as seguintes propriedades de escopo do usuário:
Valor padrão de CommandBarTop, o tipo int, = 0
Valor padrão de CommandBarLeft, o tipo int, = 0
CommandBarVisible, digite um valor booleano, o valor padrão = true
Valor padrão de CommandBarPosition, o tipo int, = 4
Valor padrão de CommandBarRowIndex, o tipo int, = 1
Consulte também
Tarefas
Como: Criar barras de ferramentas do Office
Como: Adicionar comandos aos Menus de atalho no Excel
Outros recursos
Visão geral do modelo de objeto do Outlook