Skip to content

設定 ​

Sharprompt では、プロンプトの外観と動作をグローバルにカスタマイズできます。

シンボル ​

プロンプトで使用されるシンボルをカスタマイズできます:

csharp
Prompt.Symbols.Prompt = new Symbol("🤔", "?");
Prompt.Symbols.Done = new Symbol("😎", "V");
Prompt.Symbols.Error = new Symbol("😱", ">>");

var name = Prompt.Input<string>("What's your name?");

Symbol クラスは 2 つの引数を取ります: Unicode 値と、Unicode をサポートしないターミナル用のフォールバック値です。

利用可能なシンボル ​

シンボルデフォルト (Unicode)デフォルト (フォールバック)説明
Prompt??プロンプトメッセージの前に表示
Done✔Vプロンプト完了時に表示
Error»>>バリデーション失敗時に表示
Selector›>現在ハイライトされている項目を指す
Selected◉(*)MultiSelect で選択済みの項目を示す
NotSelect◯( )MultiSelect で未選択の項目を示す

カラースキーマ ​

プロンプトで使用される色をカスタマイズできます:

csharp
Prompt.ColorSchema.Answer = ConsoleColor.DarkRed;
Prompt.ColorSchema.Select = ConsoleColor.DarkCyan;

var name = Prompt.Input<string>("What's your name?");

利用可能な色 ​

プロパティデフォルト説明
DoneSymbolGreen完了シンボルの色
PromptSymbolGreenプロンプトシンボルの色
AnswerCyanユーザーの回答の色
SelectGreen選択項目の色
ErrorRedエラーメッセージの色
HintDarkGrayヒントとプレースホルダーの色
DisabledOptionDarkCyan無効な選択肢の色

キャンセルのサポート ​

デフォルトでは、Ctrl+C または Esc を押すとプロセスが終了します。この動作を変更して例外をスローさせることができます:

csharp
Prompt.ThrowExceptionOnCancel = true;

try
{
    var name = Prompt.Input<string>("What's your name?");
    Console.WriteLine($"Hello, {name}!");
}
catch (PromptCanceledException ex)
{
    Console.WriteLine("Prompt canceled");
}

コードからのキャンセル ​

すべてのプロンプトは、オプションオブジェクトまたは構成デリゲートを受け取るオーバーロードで CancellationToken を指定できます。Prompt.Bind も同様です。入力待ちの間にトークンがキャンセルされると、プロンプトを閉じて OperationCanceledException をスローします。この動作は ThrowExceptionOnCancel の設定に関係ありません。

csharp
using var cts = new CancellationTokenSource(TimeSpan.FromSeconds(30));

try
{
    var name = Prompt.Input<string>(options => options.Message = "What's your name?", cts.Token);
    Console.WriteLine($"Hello, {name}!");
}
catch (OperationCanceledException)
{
    Console.WriteLine("Timed out");
}

カルチャ ​

ローカライズされたメッセージのカルチャを設定します:

csharp
Prompt.Culture = new CultureInfo("ja");

コンソールドライバー ​

カスタムコンソールドライバーファクトリを提供できます:

csharp
Prompt.ConsoleDriverFactory = () => new MyCustomConsoleDriver();

Released under the MIT License.