MudBlazor: Как включить разделители тысяч в реальном времени в пользовательском компоненте ввода десятичных чисел?C#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 MudBlazor: Как включить разделители тысяч в реальном времени в пользовательском компоненте ввода десятичных чисел?

Сообщение Anonymous »

Я создаю компонент Blazor, который использует MudTextField для приема десятичных чисел и их отображения с разделителями тысяч в реальном времени. Я хочу, чтобы форматирование вступило в силу, как только пользователь вводит текст (например, ввод 123456.78 должен стать 123,456.78). Мне также нужно поле для автоматического выделения всего текста в фокусе.
Вот мой текущий код. Он отображает текст с форматированием запятыми только после потери фокуса, а не при каждом нажатии клавиши:
@using System.Globalization



@code
{
[Parameter] public decimal? Value { get; set; }
[Parameter] public EventCallback ValueChanged { get; set; }
[Parameter] public string? Placeholder { get; set; }
[Parameter] public Variant Variant { get; set; } = Variant.Outlined;
[Parameter] public string Class { get; set; } = string.Empty;

private MudTextField _input = default!;
private string _displayValue = string.Empty;

protected override void OnInitialized()
{
if (Value.HasValue)
{
_displayValue = FormatNumber(Value.Value);
}
}

private void OnTextChanged(string newValue)
{
var raw = newValue.Replace(",", "");
if (decimal.TryParse(raw, out var parsed))
{
Value = parsed;
ValueChanged.InvokeAsync(parsed);
_displayValue = FormatNumber(parsed);
}
else
{
_displayValue = newValue;
}
}

private async Task OnInputFocus(FocusEventArgs args)
{
await _input.SelectAsync();
}

private string FormatNumber(decimal number) => number.ToString("###,##0.##", CultureInfo.InvariantCulture);
}


Подробнее здесь: https://stackoverflow.com/questions/793 ... cimal-inpu
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C#»