NumberBox<T> is a single-line numeric editor built on the TextEditorCore infrastructure. It provides caret/selection/clipboard support like TextBox, while keeping a bindable numeric Value.
Screenshots:
docs/images/numberbox-basic.png(placeholder)
var age = new State<int>(42);
var ui = new NumberBox<int>()
.Value(age);
NumberBox supports undo/redo:
Ctrl+Z: undoCtrl+R: redoSee Undo/Redo.
Validation runs on each text change:
T) and ValueValidator returns null, the Value is updated.Value is not updated and a validation message is shown below the editor.var port = new State<int>(8080);
var ui = new NumberBox<int>
{
ValueValidator = v => v is >= 1 and <= 65535 ? null : "Port must be in [1..65535]",
}.Value(port);
You can control parsing via:
ParseStyles (default: NumberStyles.Number)FormatProvider (default: null meaning current culture behavior for parsing/formatting)var ui = new NumberBox<double>()
.ParseStyles(NumberStyles.Float)
.FormatProvider(CultureInfo.InvariantCulture);
HorizontalAlignment = Align.Start, VerticalAlignment = Align.StartThe validation message is styled via NumberBoxStyle (NumberBoxStyle.Key).
var ui = new NumberBox<int>()
.Style(NumberBoxStyle.Default with
{
ValidationPrefix = "Error: ",
});