каков простой код проверки для текстового поля, чтобы ограничить значения и десятичные разряды?

#c# #textbox #character #ascii #decimal-point

#c# #текстовое поле #символ #ascii #десятичная точка

Вопрос:

Я хочу ограничить значения, которые могут быть введены в текстовое поле, чтобы быть;

  • только числа
  • разрешено обратное пространство
  • отключен пробел
  • только положительный
  • три десятичных знака

для другого текстового поля все вышеперечисленное, но только меньшие значения между 0 и 1

 char ch = e.KeyChar;
            if (!Char.IsDigit(ch) amp;amp; PercentBar.Text.IndexOf(@".dd") != -1 
                amp;amp; ch != 8 amp;amp; ch != 46 amp;amp; ch != 32)
            {
                e.Handled = true;
                return;
  

это мой текущий код, но, похоже, он мало что делает

Комментарии:

1. Пожалуйста, не пытайтесь применять форматы при нажатии клавиш; это вызывает проблемы с вырезанием и вставкой, перетаскиванием, редактированием, простотой доступа, макросами и тому подобным. Проверяйте текстовые поля только при отправке формы или чего-то еще.

2. @DourHighArch Или при выходе из фокуса

3. как бы вы решили проблему? я новичок, любая помощь приветствуется

4. Я согласен с @DourHighArch, но хотел бы добавить, что вы можете добавить своего рода «живую» проверку, которая выполняется в любое время, когда изменяется содержимое текстового поля, и обеспечивает визуальную обратную связь (красная подсветка или фон и т.д.), Если проверка завершается неудачей. Таким образом, все, что вам нужно сделать, это проанализировать значение int, и вы можете запускать свои тесты непосредственно на этом значении; намного проще, чем пытаться выяснить все способы, которыми пользователи могли (намеренно или непреднамеренно) обойти ваш текущий подход.

5. как мне это сделать?