Visual Studio のユーザー プロンプトを作成する
ユーザー プロンプトは、ユーザーに選択を求めるシンプルな UI メカニズムです。 ユーザーにプロンプトを表示すると、メッセージ、選択肢に 1 ~ 3 つのボタン、および閉じるボタンを含むダイアログ ボックスが作成されます。
Note
ユーザーにプロンプトを表示するために使用される正確な UI は、ユーザーのフィードバックやその他の要因に基づいて、将来のバージョンで変更される可能性があります。
一般的な例としては、OK/キャンセル プロンプトを使用して確認を要求したり、オプションの小さなセット (3 つ以下) を選択するようユーザーに求めたりします。
ユーザーには常に、選択を行わずにプロンプトを閉じるオプションがあります。
ユーザーに提示される選択肢は、型パラメーターで定義されている型の戻り値に TResult
マップされます。
ユーザー プロンプトの一部
- メッセージ
- 選択肢ボタン
- [閉じる] ボタン
作業の開始
作業を開始するには、「作業の開始」 セクションの「プロジェクト の作成」セクションに従います。
ユーザー プロンプトを操作する
このガイドでは、ユーザー プロンプトを操作するための次のシナリオについて説明します。
ユーザー プロンプトを表示する
新しい機能拡張モデルを使用してユーザー プロンプトを作成することは、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 |
例
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;
}
...
}
カスタム オプションを使用してプロンプトを作成する
組み込みオプションに加えて、ユーザーに表示される選択肢と、それぞれにマップされた戻り値をカスタマイズできます。
で定義 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 から始まるインデックスです。
次のステップ
次のサンプルは、ユーザー プロンプトを操作する方法を示しています。