ユーザー プロンプトは、選択、メッセージの確認、または 1 行の文字列入力の入力をユーザーに求めるシンプルな UI メカニズムです。 ユーザーへのプロンプトにより、メッセージ、タイトルバー、閉じるボタン、およびオプションのアイコンを含むダイアログボックスが作成されます。 ダイアログで一連のオプションから選択するように求めるメッセージが表示されると、選択肢に対して 1 ~ 3 つのボタンも含まれます。
注
ユーザーにプロンプトを表示するために使用される正確な UI は、ユーザーのフィードバックやその他の要因に基づいて、将来のバージョンで変更される可能性があります。
ユーザー プロンプトには、オプション プロンプトと入力プロンプトという 2 つのバリエーションがあります。
オプション プロンプトの一般的な例として、OK またはキャンセル プロンプトを使用して確認を要求したり、少数のオプションセット (3 つ以下) を選択するようユーザーに求めたりします。
ユーザーに提示される選択肢は、 TResult
型パラメーターで定義されている型の戻り値にマップされます。
プロジェクト名などの単一行の文字列入力をユーザーに提供するように求める場合は、入力プロンプトを使用します。
ユーザーには常に、選択を行わずにプロンプトを閉じるオプションがあります。
ユーザー プロンプトの一部
- メッセージ
- 選択肢ボタン
- [閉じる] ボタン
始めましょう
開始するには、「 最初の Visual Studio 拡張機能を作成する」の手順に従います。
ユーザー プロンプトを操作する
この記事では、ユーザー プロンプトを操作するための次のシナリオについて説明します。
ユーザー プロンプトを表示する
新しい機能拡張モデルを使用してユーザー プロンプトを作成することは、ShowPromptAsync
ヘルパーから メソッドを呼び出してオプションを渡すのと同じくらい簡単です。
ShellExtensibility.ShowPromptAsync()
ShowPromptAsync
メソッドは、次の 3 つのパラメーターを受け取ります。
パラメーター | タイプ | 必須 | 説明 |
---|---|---|---|
message |
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 |
閉める | false |
OKキャンセル
選択 | 既定値 | 戻り値 |
---|---|---|
[OK] | イエス | true |
キャンセル | いいえ | false |
閉める | false |
再試行/キャンセル
選択 | 既定値 | 戻り値 |
---|---|---|
再試行 | イエス | true |
キャンセル | いいえ | false |
閉める | false |
アイコンを使用した確認
選択 | 既定値 | 戻り値 |
---|---|---|
[OK] | イエス | true |
閉める | false |
選択肢 | アイコン |
---|---|
ErrorConfirm |
ImageMoniker.KnownValues.StatusError |
WarningConfirm |
ImageMoniker.KnownValues.StatusWarning |
AlertConfirm |
ImageMoniker.KnownValues.StatusAlert |
InformationConfirm |
ImageMoniker.KnownValues.StatusInformation |
HelpConfirm |
ImageMoniker.KnownValues.StatusConfirm |
例
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>
インスタンスを作成し、それを渡します。
ShowPromptAsync
必要なmessage
およびcancellationToken
の引数とともに。
Title
プロパティとIcon
プロパティを設定して、タイトルとアイコンをカスタマイズします。
public override async Task ExecuteCommandAsync(IClientContext context, CancellationToken ct)
{
// Custom prompt
Systems selectedSystem = await shell.ShowPromptAsync(
"Select the system to configure:",
new PromptOptions<Systems>
{
Choices =
{
{ "Core", Systems.CoreSystem },
{ "Auxiliary", Systems.AuxiliarySystem },
{ "Monitoring", Systems.MonitoringSystem },
},
DismissedReturns = Systems.CoreSystem,
DefaultChoiceIndex = 2
Title = "Configuration Assistant",
Icon = ImageMoniker.KnownValues.Settings,
},
cancellationToken);
Debug.WriteLine($"Selected system: {selectedSystem}");
}
Choices
コレクションは、ユーザーの選択をカスタム Systems
列挙型の値にマップします。 ユーザーが [閉じる ] ボタンを選択 DismissedReturns
、返される値を設定します。
DefaultChoiceIndex
は、既定の選択肢を定義する Choices
コレクションへの 0 から始まるインデックスです。
入力プロンプトを作成する
string? projectName = await shell.ShowPromptAsync(
"Enter the name of the project to configure?",
InputPromptOptions.Default with { Title = "Configuration Assistant" },
cancellationToken);
選択プロンプトなどのカスタム アイコンに加えて、入力プロンプトでは既定値もサポートされます。
DefaultText
インスタンスのInputPromptOptions
プロパティを設定します。
ユーザーが [キャンセル ] ボタン、 閉じる ボタン、または Esc キーを選択した場合、戻り値は null
。
ユーザーが入力を空白のままにし、[ OK] ボタンまたは Enter キーを選択した場合、戻り値は空の文字列です。
それ以外の場合、戻り値は、ユーザーが入力を確認したときの入力の内容です。
関連コンテンツ
次のサンプルは、ユーザー プロンプトを操作する方法を示しています。