Partager via


Comment : conserver des informations d'emplacement pour les barres d'outils personnalisées entre des sessions Outlook

Mise à jour : novembre 2007

S'applique à

Les informations de cette rubrique s'appliquent uniquement aux projets Visual Studio Tools pour Office et versions de Microsoft Office spécifiés.

Type de projet

  • Projets au niveau de l'application

Version de Microsoft Office

  • Outlook 2003

  • Outlook 2007

Pour plus d'informations, consultez Fonctionnalités disponibles par type d'application et de projet.

Cet exemple présente une méthode qui peut être employée pour enregistrer et restaurer l'emplacement d'une barre d'outils Outlook personnalisée. Le code crée une barre d'outils et enregistre son emplacement dans un fichier de paramètres utilisateur lorsque l'utilisateur quitte Outlook. Redémarrer Outlook recrée la barre d'outils et définit son emplacement en fonction des paramètres enregistrés.

Exemple

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_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();

    ((Outlook.ExplorerEvents_Event)explorer).Close += 
        new Microsoft.Office.Interop.Outlook.ExplorerEvents_CloseEventHandler(ThisAddIn_Close);

    if (explorer != null)
    {
        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();
}

Compilation du code

Cet exemple nécessite :

  • Cinq paramètres utilisateur. Double-cliquez sur l'icône Settings.settings dans le dossier Propriétés du projet (en C#) ou dans le dossier My Project (en Visual Basic), puis ajoutez les propriétés de portée utilisateur suivantes :

    • CommandBarTop, tapez int, valeur par défaut = 0

    • CommandBarLeft, tapez int, valeur par défaut = 0

    • CommandBarVisible, tapez boolean, valeur par défaut = true

    • CommandBarPosition, tapez int, valeur par défaut = 4

    • CommandBarRowIndex, tapez int, valeur par défaut = 1

Voir aussi

Tâches

Comment : créer des barres d'outils Office par programme

Comment : créer par programme des menus Office

Concepts

Vue d'ensemble du modèle d'objet Outlook

Personnalisation de l'interface utilisateur Office

Création de solutions Office dans Visual Studio