次の方法で共有


ステータス バーを拡張する

IDE の下部にある Visual Studio ステータス バーを使用して、情報を表示できます。

ステータス バーを拡張すると、フィードバック領域、進行状況バー、アニメーション領域、デザイナー領域の 4 つの領域に情報と UI を表示できます。 フィードバック領域を使用すると、テキストを表示し、表示されたテキストを強調表示できます。 進行状況バーには、ファイルの保存など、実行時間の短い操作の増分進行状況が表示されます。 アニメーション領域には、実行時間の長い操作や、ソリューション内に複数のプロジェクトをビルドするなど、未確定の長さの操作に対して、継続的にループされたアニメーションが表示されます。 デザイナー領域には、カーソル位置の行番号と列番号が表示されます。

(IVsStatusbar サービスから) SVsStatusbar インターフェイスを使用してステータス バーを取得できます。 さらに、 IVsStatusbarUser インターフェイスを実装することで、ウィンドウ フレーム上の任意のオブジェクトをステータス バー クライアント オブジェクトとして登録できます。 ウィンドウがアクティブになると、Visual Studio は、そのウィンドウのサイトにあるオブジェクトに対して、 IVsStatusbarUser インターフェイスのクエリを実行します。 見つかった場合は、返されたインターフェイスで SetInfo メソッドを呼び出し、オブジェクトはそのメソッド内からステータス バーを更新できます。 たとえば、ドキュメント ウィンドウでは、 SetInfo メソッドを使用して、アクティブになったときにデザイナー領域の情報を更新できます。

次の手順では、VSIX プロジェクトを作成し、カスタム メニュー コマンドを追加する方法を理解していることを前提としています。 詳細については、「 メニュー コマンドを使用して拡張機能を作成する」を参照してください。

ステータス バーを変更する

この手順では、ステータス バーのフィードバック領域で、テキストの設定と取得、静的テキストの表示、表示されるテキストの強調表示を行う方法について説明します。

ステータス バーの読み取りと書き込み

  1. TestStatusBarExtension という名前の VSIX プロジェクトを作成し、TestStatusBarCommand という名前のメニュー コマンドを追加します。

  2. TestStatusBarCommand.csで、コマンド ハンドラー メソッド コード (MenuItemCallback) を次のように置き換えます。

    private void MenuItemCallback(object sender, EventArgs e)
    {
        IVsStatusbar statusBar = (IVsStatusbar)ServiceProvider.GetService(typeof(SVsStatusbar));
    
        // Make sure the status bar is not frozen
        int frozen;
    
        statusBar.IsFrozen(out frozen);
    
        if (frozen != 0)
        {
            statusBar.FreezeOutput(0);
        }
    
        // Set the status bar text and make its display static.
        statusBar.SetText("We just wrote to the status bar.");
    
        // Freeze the status bar.
        statusBar.FreezeOutput(1);
    
        // Get the status bar text.
        string text;
        statusBar.GetText(out text);
        System.Windows.Forms.MessageBox.Show(text);
    
        // Clear the status bar text.
        statusBar.FreezeOutput(0);
        statusBar.Clear();
    }
    
  3. コードをコンパイルし、デバッグを開始します。

  4. Visual Studio の実験用インスタンスで [ ツール ] メニューを開きます。 [ TestStatusBarCommand の呼び出し] ボタンを選択します。

    ステータス バーのテキストに、ステータス バーに書き込んだばかり と表示されます。表示されるメッセージ ボックスには同じテキストが使用されます。

進行状況バーを更新する

次の手順は、進行状況バーを初期化して更新する方法を示しています。

  1. TestStatusBarCommand.cs ファイルを開き、MenuItemCallback メソッドを次のコードに置き換えます。

    private void MenuItemCallback(object sender, EventArgs e)
    {
        IVsStatusbar statusBar = (IVsStatusbar)ServiceProvider.GetService(typeof(SVsStatusbar));
        uint cookie = 0;
        string label = "Writing to the progress bar";
    
        // Initialize the progress bar.
        statusBar.Progress(ref cookie, 1, "", 0, 0);
    
        for (uint i = 0, total = 20; i <= total; i++)
        {
            // Display progress every second.
            statusBar.Progress(ref cookie, 1, label, i, total);
            System.Threading.Thread.Sleep(1000);
        }
    
        // Clear the progress bar.
        statusBar.Progress(ref cookie, 0, "", 0, 0);
    }
    
  2. コードをコンパイルし、デバッグを開始します。

  3. Visual Studio の実験用インスタンスで [ ツール ] メニューを開きます。 [ TestStatusBarCommand の呼び出し] ボタンを選択します。

    ステータス バーのテキストに 、進行状況バーへの書き込みが 表示されるようになりました。進行状況バーは 20 秒間 1 秒ごとに更新され、状態バーと進行状況バーはクリアされます。

アニメーションを表示する

  1. ステータス バーには、実行時間の長い操作 (ソリューションで複数のプロジェクトをビルドするなど) を示すループ アニメーションが表示されます。 このアニメーションが表示されない場合は、適切な Tools>Options 設定があることを確認します。

    1. [ツール>オプション] ウィンドウを開き>環境>ビジュアル エクスペリエンス>Effects] セクションを展開します。

    2. [ リッチ クライアント ビジュアル エクスペリエンスを有効にする] で、[ 自動] を選択します (推奨される場合にのみ有効にします)。

    1. [ツール>オプション] ダイアログを開き、[環境>General] セクションを展開します。

    2. [ クライアントのパフォーマンスに基づいてビジュアル エクスペリエンスを自動的に調整 する] チェック ボックスをオフにします。

    3. リッチ クライアント ビジュアル エクスペリエンスを有効にする のサブオプションのチェックボックスを選択します。

    4. [OK] を選択.

    Visual Studio の実験用インスタンスでプロジェクトをビルドすると、アニメーションが表示されるようになりました。

    この手順では、プロジェクトまたはソリューションのビルドを表す標準の Visual Studio アニメーションを表示する方法を示します。

  2. TestStatusBarCommand.cs ファイルを開き、MenuItemCallback メソッドを次のコードに置き換えます。

    private void MenuItemCallback(object sender, EventArgs e)
    {
        IVsStatusbar statusBar =(IVsStatusbar)ServiceProvider.GetService(typeof(SVsStatusbar));
    
        // Use the standard Visual Studio icon for building.
        object icon = (short)Microsoft.VisualStudio.Shell.Interop.Constants.SBAI_Build;
    
        // Display the icon in the Animation region.
        statusBar.Animation(1, ref icon);
    
        // The message box pauses execution for you to look at the animation.
        System.Windows.Forms.MessageBox.Show("showing?");
    
        // Stop the animation.
        statusBar.Animation(0, ref icon);
    }
    
  3. コードをコンパイルし、デバッグを開始します。

  4. Visual Studio の実験用インスタンスで [ツール ] メニューを開 き、[TestStatusBarCommand の呼び出 し] ボタンを選択します。

    メッセージ ボックスが表示されたら、右端のステータス バーにもアニメーションが表示されます。 メッセージ ボックスを閉じると、アニメーションは消えます。