次の方法で共有


Visual Studio のユーザー プロンプトを作成する

ユーザー プロンプトは、ユーザーに選択を求めるシンプルな UI メカニズムです。 ユーザーにプロンプトを表示すると、メッセージ、選択肢に 1 ~ 3 つのボタン、および閉じるボタンを含むダイアログ ボックスが作成されます。

Note

ユーザーにプロンプトを表示するために使用される正確な UI は、ユーザーのフィードバックやその他の要因に基づいて、将来のバージョンで変更される可能性があります。

一般的な例としては、OK/キャンセル プロンプトを使用して確認を要求したり、オプションの小さなセット (3 つ以下) を選択するようユーザーに求めたりします。

ユーザーには常に、選択を行わずにプロンプトを閉じるオプションがあります。

ユーザーに提示される選択肢は、型パラメーターで定義されている型の戻り値に TResult マップされます。

ユーザー プロンプトの一部

Screenshot showing the parts of a user prompt.

  1. メッセージ
  2. 選択肢ボタン
  3. [閉じる] ボタン

作業の開始

作業を開始するには、「作業の開始」 セクションの「プロジェクト の作成」セクションに従います。

ユーザー プロンプトを操作する

このガイドでは、ユーザー プロンプトを操作するための次のシナリオについて説明します。

ユーザー プロンプトを表示する

新しい機能拡張モデルを使用してユーザー プロンプトを作成することは、ShellExtensibility ヘルパーからメソッドをShowPromptAsync呼び出してオプションを渡すのと同じくらい簡単です。

ShellExtensibility.ShowPromptAsync<TResult>()

ShowPromptAsync メソッドは 3 つのパラメーターを受け取ります。

パラメーター タイプ Required 説明
メッセージ string はい プロンプトのメッセージのテキスト。
options PromptOptions<TResult> はい ユーザーの選択肢を定義し、それらを戻り値にマッピングします。
cancellationToken CancellationToken はい CancellationToken非同期操作の場合。 トリガーされると、プロンプトは強制的に閉じられます。

次のコードは、 Command 単純なメッセージと [OK] ボタンを含むユーザー プロンプトを示しています。

public override async Task ExecuteCommandAsync(IClientContext context, CancellationToken cancellationToken)
{
    await this.Extensibility.Shell().ShowPromptAsync("This is a user prompt.", PromptOptions.OK, cancellationToken))
}

組み込みオプションを使用する

SDK では、いくつかの定義済み PromptOptions セットを使用できます。

OK

選択肢 既定値 戻り値
"OK" はい true
Dismissed (破棄済み) false

OKCancel

選択肢 既定値 戻り値
"OK" はい true
"キャンセル" いいえ false
Dismissed (破棄済み) false

RetryCancel

選択肢 既定値 戻り値
"再試行" はい true
"キャンセル" いいえ false
Dismissed (破棄済み) false

Screenshot showing a user prompt with OK.

1 つの [OK] を選択してプロンプトを作成します。

public override async Task ExecuteCommandAsync(IClientContext context, CancellationToken ct)
{
    // Asking the user to confirm an operation.
    if (!await this.Extensibility.Shell().ShowPromptAsync("Continue with executing the command?", PromptOptions.OKCancel, ct))
    {
      return;
    }
    
    ...
}

ユーザーが [OK] をクリックすると、 ShowPromptAsync 待機中に true 戻ります。 ユーザーが閉じるボタンをクリックすると false、.

組み込みオプションの既定の選択肢を "キャンセル" に変更する

public override async Task ExecuteCommandAsync(IClientContext context, CancellationToken ct)
{
  // Asking the user to confirm an operation.
  if (!await this.Extensibility.Shell().ShowPromptAsync("Continue with executing the command?", PromptOptions.OKCancel.WithCancelAsDefault(), ct))
  {
    return;
  }
  
  ...
}

カスタム オプションを使用してプロンプトを作成する

Screenshot showing a custom user prompt.

組み込みオプションに加えて、ユーザーに表示される選択肢と、それぞれにマップされた戻り値をカスタマイズできます。

で定義 PromptOptionsされているセットを使用する代わりに、新しいインスタンス PromptOptions<TResult> を作成して渡します ShowPromptAsync

まず、戻り値を定義する値型を作成します。

public enum TokenThemeResult
{
  None,
  Solarized,
  OneDark,
  GruvBox,
}

次に、インスタンスをPromptOptions<TResult>作成し、必須messageと引数とcancellationToken共に渡ShowPromptAsyncします。

public override async Task ExecuteCommandAsync(IClientContext context, CancellationToken ct)
{
  // Custom prompt
  var themeResult = await this.Extensibility.Shell().ShowPromptAsync(
    "Which theme should be used for the generated output?",
    new PromptOptions<TokenThemeResult>
    {
      Choices =
      {
        { "Solarized Is Awesome", TokenThemeResult.Solarized },
        { "OneDark Is The Best", TokenThemeResult.OneDark },
        { "GruvBox Is Groovy", TokenThemeResult.GruvBox },
      },
      DismissedReturns = TokenThemeResult.None,
      DefaultChoiceIndex = 2,
    },
    ct);

  Debug.WriteLine($"Selected Token Theme: {themeResult}");
}

このコレクションは Choices 、ユーザーの選択肢を列挙型の値に TokenThemeResult マップします。 DismissedReturns は、ユーザーが閉じるボタンをクリックした場合に返される値を設定します。 DefaultChoiceIndex は、既定の選択肢を定義するコレクションの Choices 0 から始まるインデックスです。

次のステップ

次のサンプルは、ユーザー プロンプトを操作する方法を示しています。