#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. как мне это сделать?