Text prompt
Sometimes you want to get some input from the user, and for this
you can use the Prompt<TResult>
.
The use of prompts insides status or progress displays is not supported.
Confirmation
Run prompt example? [y/n] (y): _
Usage
// Ask the user to confirm
var confirmation = AnsiConsole.Prompt(
new TextPrompt<bool>("Run prompt example?")
.AddChoice(true)
.AddChoice(false)
.DefaultValue(true)
.WithConverter(choice => choice ? "y" : "n"));
// Echo the confirmation back to the terminal
Console.WriteLine(confirmation ? "Confirmed" : "Declined");
Otherwise it is possible to use the ConfirmationPrompt
// Ask the user to confirm
var confirmation = AnsiConsole.Prompt(
new ConfirmationPrompt("Run prompt example?"));
// Echo the confirmation back to the terminal
Console.WriteLine(confirmation ? "Confirmed" : "Declined");
Simple
What's your name? Patrik
What's your age? 37
Usage
// Ask the user a couple of simple questions
var name = AnsiConsole.Prompt(
new TextPrompt<string>("What's your name?"));
var age = AnsiConsole.Prompt(
new TextPrompt<int>("What's your age?"));
// Echo the name and age back to the terminal
AnsiConsole.WriteLine($"So you're {name} and you're {age} years old");
Otherwise it is possible to use the Ask
method
// Ask the user a couple of simple questions
var name = AnsiConsole.Ask<string>("What's your name?");
var age = AnsiConsole.Ask<int>("What's your age?");
// Echo the name and age back to the terminal
AnsiConsole.WriteLine($"So you're {name} and you're {age} years old");
Choices
What's your favorite fruit? [Apple/Banana/Orange] (Orange): _
Usage
// Ask for the user's favorite fruit
var fruit = AnsiConsole.Prompt(
new TextPrompt<string>("What's your favorite fruit?")
.AddChoices(["Apple", "Banana", "Orange"])
.DefaultValue("Orange"));
// Echo the fruit back to the terminal
Console.WriteLine($"I agree. {fruit} is tasty!");
Validation
What's the secret number? 32
Too low
What's the secret number? 102
Too high
What's the secret number? _
Usage
// Ask the user to guess the secret number
var number = AnsiConsole.Prompt(
new TextPrompt<int>("What's the secret number?")
.Validate((n) => n switch
{
< 50 => ValidationResult.Error("Too low"),
50 => ValidationResult.Success(),
> 50 => ValidationResult.Error("Too high"),
}));
// Echo the user's success back to the terminal
Console.WriteLine($"Correct! The secret number is {number}.");
Secrets
Enter password: ************_
Usage
// Ask the user to enter the password
var password = AnsiConsole.Prompt(
new TextPrompt<string>("Enter password:")
.Secret());
// Echo the password back to the terminal
Console.WriteLine($"Your password is {password}");
Masks
Enter password: ------------_
You can utilize a null character to completely hide input.
Enter password: _
Usage
// Ask the user to enter the password
var password = AnsiConsole.Prompt(
new TextPrompt<string>("Enter password:")
.Secret('-'));
// Echo the password back to the terminal
Console.WriteLine($"Your password is {password}");
Optional
[Optional] Favorite color? _
Usage
// Ask the user to enter the password
var color = AnsiConsole.Prompt(
new TextPrompt<string>("[[Optional]] Favorite color?")
.AllowEmpty());
// Echo the color back to the terminal
Console.WriteLine(string.IsNullOrWhiteSpace(color)
? "You're right, all colors are beautiful"
: $"I agree. {color} is a very beautiful color");