Проверка текстового поля в c # - PullRequest
5 голосов
/ 21 февраля 2011

У меня есть форма с текстовым полем, которая должна принимать только четырехзначные значения года в период с 1980 по 2011 годы.Я уверен, что должен быть простой элемент управления проверкой c # для реализации этой проверки, но я не могу его найти.

Есть предложения?

Ответы [ 5 ]

4 голосов
/ 21 февраля 2011

Catch Validating событие и добавьте туда свой код проверки.

Для полного примера проверьте MSDN page .

Для простой проверки вы также можете использовать MaskedTextBox .

2 голосов
/ 21 февраля 2011

Во-первых, я бы сказал, что для свойства max length установлено значение 4, чтобы никакие дополнительные символы не могли быть введены

Кроме того, вам нужно было бы подключить свои собственные элементы управления для проверки (может быть проверка измененного текста, потеря фокуса и т. Д.), Которая проверяла бы, что вводятся только цифры и они находятся между указанными значениями

2 голосов
/ 21 февраля 2011

http://www.java2s.com/Tutorial/CSharp/0460__GUI-Windows-Forms/TextBoxvalidation.htm

Попробуйте эту ссылку и просто измените диапазон с тем, что вы хотите. Удачного кодирования ....

1 голос
/ 21 февраля 2011

A MaskedTextBox сделает свое дело.Установите маску в соответствии с вашими потребностями: msdn .Но я сомневаюсь, что он проверит, находится ли значение между диапазоном.Вероятно, он только проверяет, является ли значение целым числом.

0 голосов
/ 21 февраля 2011

Хорошо, я не собираюсь писать весь код здесь, но вот что я сделаю:

В текстовом событии вашего текстового поля;

  • Проверьте, является ли введенное значение числовым
  • Проверьте, соответствует ли он шаблону (сравните символы с тем, что вы хотите)

Для этого вам нужно сравнить каждое число по одному. Я бы предложил вам написать метод, который анализирует текст и сравнивает его с ожидаемыми значениями. Примерно так:

private bool IsNumberValid(string text)
{
    String min = "1980",max=2011;
    try
    {
        int minNumber = Convert.ToInt32(min.Substring(0,text.length));
        int maxNumber = Convert.ToInt32(max.Substring(0,text.length));
        int myNumber = Convert.ToInt32(text);
        if(myNumber <= max && myNumber >= min)
            return true;
     }
    catch(Exception ex)
    {
        return false; // number is not numeric
    }
    return false;
 }

Могут быть небольшие ошибки, не записал это в VS. Вам нужно проверить длину текста и не вызывать этот метод, если он равен 0.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...