Что лучший способ состоит в том, чтобы реализовать входные ограничения на TextBox в C#?

Вы должны отправлять todoListId в теле запроса. Удалить это. Loopback Juggler автоматически добавляет это значение при сохранении. Ниже тело запроса работает для меня.

{
  "title": "Testing 123",
  "desc": "This is a testing description",
  "isComplete": true
}
7
задан Svante 6 March 2009 в 01:11
поделиться

7 ответов

Не забывайте следующий issues/corner-cases, с которым Вы будете сталкиваться при потере работоспособности по предложенному маршруту:

  • Пользователи могут использовать Ctrl-V или Shift-Insert для вставки "недопустимых" значений в (Который второй немного более хитер для ловли)..., но пользователям, вероятно, нужно разрешить вставить легальные значения в управление
  • Пользователи могут щелкнуть правой кнопкой, вставить недопустимые значения в использовании контекстного меню по умолчанию
  • Даже если Вы попытались устранить предыдущую проблему путем предоставления текстовому полю ее собственного контекстного меню, пользователи могут щелкнуть правой кнопкой вне управления, удержать правильную кнопку, перетащить по текстовому полю и отпустить для доступа к контекстному меню по умолчанию (и вставка в недопустимых значениях)
  • Безотносительно ключа, обрабатывающего Вас, делают не должен отключать сочетания клавиш как Высокий звук - F4, и т.д. (И да, Вы повредите это, если Вы установите SuppressKeyPress для всего, что не является допустимой цифрой),
  • Пользователи должны, вероятно, смочь ввести частичные значения (например. "-.", поскольку они начинают вводить "-.23") без Вашего текстового поля, наказывающего их
  • Числа как "-.1e-2" мог считаться законным
  • Пользователь мог осуществимо ввести значение, которое содержит только цифры, но которое переполнило бы a float
  • Худший из всех: Некоторый другой таинственный угловой случай, который Ваши пользователи найдут после поставки (!!)

Мораль? Это, может быть очень хитрым, чтобы сделать то, что Вы предлагаете.

Вы, вероятно, любой хочет сделать комбинацию следующего:

  • Используйте управление, что кто-то, который знает все угловые созданные случаи (как Microsoft)
  • Выполните в основной проверке TextChanged событие (и выполнение чего-то пассивного, как изменение цвета фона текстового поля)
  • Сохраните проверку, пока Вы на самом деле не пытаетесь использовать значение, которое они ввели
  • Используйте системные библиотеки для Parse значение пользователя для Вас
13
ответ дан 6 December 2019 в 12:55
поделиться

Смотрите на управление MaskedTextBox. Это также наследовалось TextBoxBase и вероятно имеет функциональность, которую Вы создаете в Ваш.

2
ответ дан 6 December 2019 в 12:55
поделиться

Действительно ли необходимо сделать проверку во время ввода данных, или можно ли позволить себе проверить окончательное значение, вводимое, после того как фокус потерян?

Если последний, можно также использовать управление ErrorProvider, чтобы помочь ограничить функциональность, пока вход не разрешен.

0
ответ дан 6 December 2019 в 12:55
поделиться

Что относительно того, чтобы использовать NumericUpDown?

1
ответ дан 6 December 2019 в 12:55
поделиться

Или проверьте на использование соответствия

void TextBox_KeyUp(object sender, KeyEventArgs e)
{
  if(..) // your condition
  {
    e.SuppressKeyPress = false;
  }
  else
  {
    e.SuppressKeyPress = true;
  }
}

или

void TextBox_KeyUp(object sender, KeyEventArgs e)
{
   e.SuppressKeyPress = CheckInput(e.KeyValue); // where CheckInput is boolean method
}
0
ответ дан 6 December 2019 в 12:55
поделиться

Я обнаружил свойство ValidatingType maskedTextBox:

maskedTextBox1.ValidatingType = typeof(System.Double);

Это действительно говорит Вам, допустимо ли это или нет. К сожалению, это только, кажется, проверяет, когда фокус изменяется (и даже затем это ничего на самом деле не делает); но возможно существует некоторый способ использовать это.

0
ответ дан 6 December 2019 в 12:55
поделиться

Я не думаю, что колесо было изобретено все же (по крайней мере, в платформе.NET). Я уверен, что существует что-то на CodeProject и т.п., делая подобный тому, что Вы - то, хотя, таким образом, это может стоить Google.

Тяжелый подъем не должен быть слишком невероятно плохим все же. Существует немного больше к нему, чем на первый взгляд.

Чрезмерно упрощенный пример - Вы, может обработать OnKeyPress, сделайте a Float.TryParse с новым символом, добавленным в. Если это правда, сохраните нажатие клавиши; если ложь, отмена это (e.Handled = true).

Твердая часть - что, если они удаляют, сократите или вставьте выбор. Другая вещь состоит в том, когда они только начинают (Вы могли бы хотеть принять "-" как частичный допустимый вход)...

0
ответ дан 6 December 2019 в 12:55
поделиться
Другие вопросы по тегам:

Похожие вопросы: