Я не думаю, что колесо было изобретено (по крайней мере, в .NET Framework). Я уверен, что в CodeProject и т. П. Есть что-то похожее на то, что есть у вас, так что это может стоить Google.
Тяжелая атлетика не должна быть слишком плохой. Это немного больше, чем на первый взгляд.
Чрезмерно упрощенный пример: вы можете обработать OnKeyPress
, сделать Float.TryParse
с добавленным новым символом. Если true, удерживайте нажатой клавишу; если false, отмените его (e.Handled = true
).
Сложная часть - что делать, если они удаляют, вырезают или вставляют выделение. Другое дело, когда они только начинают (вы можете принять «-» как частичный допустимый ввод) ...