次の方法で共有


方法 : Outlook セッション間でカスタム ツール バーの位置情報を維持する

更新 : 2007 年 11 月

対象

このトピックの情報は、指定された Visual Studio Tools for Office プロジェクトおよび Microsoft Office のバージョンにのみ適用されます。

プロジェクトの種類

  • アプリケーション レベルのプロジェクト

Microsoft Office のバージョン

  • Outlook 2003

  • Outlook 2007

詳細については、「アプリケーションおよびプロジェクトの種類別の使用可能な機能」を参照してください。

この例では、Outlook のカスタム ツール バーの位置を保存および復元するために使用できる方法の 1 つを示します。このコードでは、ツール バーを作成し、ユーザーが Outlook を終了したときに、その位置をユーザー設定ファイルに保存します。Outlook を再度起動すると、ツール バーが再度作成され、保存された設定に基づいてその位置が設定されます。

使用例

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

コードのコンパイル方法

この例で必要な要素は次のとおりです。

  • 5 つのユーザー設定。オブジェクトの [プロパティ] フォルダ (C# の場合) または [My Project] フォルダ (Visual Basic の場合) の [Settings.settings] アイコンをダブルクリックし、次のユーザースコープのプロパティを追加します。

    • CommandBarTop, type int, default value = 0

    • CommandBarLeft, type int, default value = 0

    • CommandBarVisible, type boolean, default value = true

    • CommandBarPosition, type int, default value = 4

    • CommandBarRowIndex, type int, default value = 1

参照

処理手順

方法 : Office ツール バーをプログラムで作成する

方法 : Office メニューをプログラムで作成する

概念

Outlook オブジェクト モデルの概要

Office UI のカスタマイズ

Visual Studio における Office ソリューションの作成