Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.73/11: Рейтинг темы: голосов - 11, средняя оценка - 4.73
 Аватар для xamelione25
-4 / 5 / 2
Регистрация: 04.02.2013
Сообщений: 1,861

Проверка большого перечня textbox на разные условия

16.04.2024, 03:27. Показов 2802. Ответов 34
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Подскажите как осуществить данную проверку альтернативным способом, по сравнению с использованием множество условий в условиях (if в if итд).
То есть у меня есть допустим много textbox`ов. Для каждого из них требуются индивидуальные условия, допустим: разная максимальная длина вводимых символов; для каждого определенная группа используемых символов; индивидуальный формат; у каждого начало со своего определенного символ; итд.
И по нажатию на "сохранить" в БД, у меня все эти условия должны быть соблюдены.

Чтобы, к примеру, мне вот такую лестницу не пришлось изобретать:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
            if (...)
            {
                if (...)
                {
                    
                }
                else
                {
                    if (...)
                    {
 
                    }
                    else
                    {
                        if (...)
                        {
 
                        }
                        else
                        {
                            
                        }
                    }
                }
            }
            else
            {
                
            }
Насколько я понимаю case в этом помочь не сможет ни чем ...
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
16.04.2024, 03:27
Ответы с готовыми решениями:

Проверка большого количества textbox
Нужно проверить 16 textbox'ов на пустоту. Как это грамотно сделать, чтобы не писать для каждого отдельную проверку? И по тому же принципу...

Проверка строк текстового файла на разные условия и вывод ошибок на экран
Имеется текстовый файл такого вида - ************ 3 1 2 3 3 2 1 2 1 3 1 2 3 . . . 1 2 3

Внутри проверки условия не производится ещё одна проверка условия
Как задумывалось - при нажатии на джойстик просто должны были остановится движки, но если при этом нажат джойстик по оси Y в опр...

34
Эксперт JavaЭксперт по электроникеЭксперт .NET
 Аватар для wizard41
3463 / 2784 / 575
Регистрация: 04.09.2018
Сообщений: 8,757
Записей в блоге: 3
20.04.2024, 15:53
Студворк — интернет-сервис помощи студентам
Wolfdp, дык... это... Во первых, печать не в модели - это просто "проверочная" строка.
Во вторых: видно же изначально для кого это все. Если мы начнем сюда встраивать логику так, как мы можем, то на этом тему можно будет закрыть сразу - целевому пользователю это не скажет ни о чем. Он испугается и убежит
Wolfdp, картинка - Атас! Нормально)
0
Эксперт JavaЭксперт по электроникеЭксперт .NET
 Аватар для wizard41
3463 / 2784 / 575
Регистрация: 04.09.2018
Сообщений: 8,757
Записей в блоге: 3
20.04.2024, 15:56
ПЫ.СЫ.
И вообще, выходные вроде (у меня они редки). Вернемся к проекту позднее:
Кликните здесь для просмотра всего текста
0
Эксперт JavaЭксперт по электроникеЭксперт .NET
 Аватар для wizard41
3463 / 2784 / 575
Регистрация: 04.09.2018
Сообщений: 8,757
Записей в блоге: 3
20.04.2024, 16:06
Кстати, на тот факт, что Директор у нас остался без конструктора - почему-то никто не обратил внимание. Хотя, по негласному определению, это является как раз часто применимой моделью в практике.
0
 Аватар для xamelione25
-4 / 5 / 2
Регистрация: 04.02.2013
Сообщений: 1,861
21.04.2024, 18:09  [ТС]
OwenGlendower, wizard41, допустим примеры валидации могут быть вот такими, как на скрине. А как валидировать отсутствие выбора пункта в combobox???
Миниатюры
Проверка большого перечня textbox на разные условия  
0
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18406 / 14338 / 5370
Регистрация: 17.03.2014
Сообщений: 29,025
Записей в блоге: 1
21.04.2024, 18:18
xamelione25, отсутствие выбора = отсутствие значения = атрибуту Required.
0
Эксперт JavaЭксперт по электроникеЭксперт .NET
 Аватар для wizard41
3463 / 2784 / 575
Регистрация: 04.09.2018
Сообщений: 8,757
Записей в блоге: 3
21.04.2024, 19:17
Лучший ответ Сообщение было отмечено xamelione25 как решение

Решение

xamelione25, немного набросал проект на основе предложенного OwenGlendower'ом валидатора.
Кликните здесь для просмотра всего текста

Пока завел только одно правило для Названия организации:
C#
1
2
3
4
5
RuleFor(org => org.Name)
    .NotEmpty()
    .WithMessage("Название огранизации не может быть пустым!")
    .Must(name => name.HasNotSpecialChars())
    .WithMessage("Название организации не должно содержать спец-символов!");
,
где HasNotSpecialChars() это:
C#
1
2
3
4
5
6
7
8
public static bool HasNotSpecialChars(this string str)
{
    var regexItem = MyRegex();
    return regexItem.IsMatch(str);
}
 
[GeneratedRegex("^[а-яА-Яa-zA-Z0-9 -]*$")]
private static partial Regex MyRegex();
Вложения
Тип файла: 7z Contractors.7z (92.6 Кб, 2 просмотров)
1
Эксперт JavaЭксперт по электроникеЭксперт .NET
 Аватар для wizard41
3463 / 2784 / 575
Регистрация: 04.09.2018
Сообщений: 8,757
Записей в блоге: 3
21.04.2024, 20:22
Цитата Сообщение от xamelione25 Посмотреть сообщение
как валидировать отсутствие выбора пункта в combobox???
combobox.SelectedItem == null
или
combobox.SelectedIndex == -1

xamelione25, вообще, касательно подобных проверок, правильнее делать так -> не допускать возможности пользователю в принципе что-то сделать не так.
Например, в поле для ввода ИНН не дать ему ввести буквы, и .т.п...

Добавлено через 58 минут
Тут не ясно:
Цитата Сообщение от xamelione25 Посмотреть сообщение
Каждое не может состоять более чем из 4 слов
Они же вроде и так вводятся в разные текстБоксы. Как можно получить что-то из 4-х слов? Ну, фамилия, иногда может быть вида Иванова-Плюшкина...
1
Эксперт JavaЭксперт по электроникеЭксперт .NET
 Аватар для wizard41
3463 / 2784 / 575
Регистрация: 04.09.2018
Сообщений: 8,757
Записей в блоге: 3
22.04.2024, 01:51
Лучший ответ Сообщение было отмечено xamelione25 как решение

Решение

Добавил правила для ФИО директора, ИНН, ОГРН, ОГРНИП.
Правила
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
            /* Правило для Названия Орагнизации */
            RuleFor(org => org.Name)
                .NotEmpty()
                .OverridePropertyName("Название Организации")
                .WithMessage("не может быть пустым!")
                .Must(name => name.HasNotSpecialChars())
                .WithMessage("не должно содержать спец-символов!");
 
            /* Правила для Директора */
            RuleFor(org => org.Director).SetValidator(new DirectorValidator());
 
            /* Правило для ИНН */
            RuleFor(org => org.Inn)
                .NotEmpty()
                .OverridePropertyName("ИНН")
                .WithMessage("не заполнено!")
                .Must(inn => inn.IsNumericString())
                .WithMessage("должен содержать только числа!")
                .Length(10)
                .WithMessage("должен содержать 10 чисел!");
 
 
            /* Правило для ОГРН - 13 чисел */
            RuleFor(org => org.Ogrn)
                .NotEmpty()
                .OverridePropertyName("ОГРН")
                .WithMessage("не заполнен!")
                .Length(13).When(o => o.Occupation != Occupation.IE)
                .WithMessage("должен содержать 13 чисел!");
 
 
            /* Правило для ОГРНИП - 15 чисел */
            RuleFor(org => org.Ogrn)
                .NotEmpty()
                .OverridePropertyName("ОГРНИП")
                .Length(15).When(o => o.Occupation == Occupation.IE)
                .WithMessage("должен содержать 15 чисел!");
 
 
            /* Правило для ОГРН(ИП) - только числа */
            RuleFor(org => org.Ogrn)
                .NotEmpty()
                .OverridePropertyName("ОГРН(ИП)")
                .Must(ogrn => ogrn.IsNumericString())
                .WithMessage("должен содержать только числа!");

Директор - отдельная сущность, поэтому и правила для него в отд. классе:
Правила для директора
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
    public class DirectorValidator : AbstractValidator<Ceo>
    {
        public DirectorValidator()
        {
            RuleFor(d => d.Surname)
                .NotEmpty()
                .OverridePropertyName("Фамилия")
                .Must(name => name.HasNotSpecialChars())
                .Must(sur => sur.HasNotDigits());
 
            RuleFor(d => d.Name)
                .NotEmpty()
                .OverridePropertyName("Имя")
                .Must(name => name.HasNotSpecialChars())
                .Must(sur => sur.HasNotDigits());
 
            RuleFor(d => d.Patronymic)
                .NotEmpty()
                .OverridePropertyName("Отчество")
                .Must(name => name.HasNotSpecialChars())
                .Must(sur => sur.HasNotDigits());
        }
    }

Доп. методы
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
    public static partial class Extensions
    {
        /* Без спец-символов */
        public static bool HasNotSpecialChars(this string str)
        {
            var regexItem = MyRegex();
            return regexItem.IsMatch(str);
        }
 
        [GeneratedRegex("^[а-яА-Яa-zA-Z0-9 -]*$")]
        private static partial Regex MyRegex();
 
 
        /* В строке только числа */
        public static bool IsNumericString(this string str) =>
            str.All(char.IsDigit);
 
 
        /* С строке нет чисел */
        public static bool HasNotDigits(this string str) =>
            !str.Any(char.IsDigit);
    }

Проверка на "ничего не выбрано" в комбобоксе:
Кликните здесь для просмотра всего текста
C#
1
2
3
4
5
6
    if (cmbOccupation.SelectedItem == null)
    {
        richTextBox1.ForeColor = Color.Red;
        richTextBox1.Text = "Необходимо выбрать Тип организации!";
        return;
    }

Интересно, что, если у комбокса привязка к источнику данных (.NET8), то при запуске приложения он сам выбирает 1-ю позицию, т.е. там изначально нет состояния, когда ничего не выбрано. В WF NET.4.х такого вроде не было - там даже с привязкой, если ничего специально кодом не делать, то выбор был "пустой" при старте...
Вложения
Тип файла: 7z Contractors.7z (97.9 Кб, 0 просмотров)
1
2298 / 1614 / 400
Регистрация: 26.06.2017
Сообщений: 4,780
Записей в блоге: 1
22.04.2024, 11:07
Цитата Сообщение от wizard41 Посмотреть сообщение
Директор у нас остался без конструктора
Главное чтобы с бухгалтером остался, а конструкторы, техники и прочие бездельники директору не нужны
Минутка юмора окончена.
Цитата Сообщение от wizard41 Посмотреть сообщение
Правила для директора
C#
1
sur.HasNotDigits()
Не согласен! До сих пор в именах могут встречаться цифры.
0
2810 / 1679 / 885
Регистрация: 14.04.2015
Сообщений: 5,723
22.04.2024, 11:21
Uswer, это что за имя такое?)
0
 Аватар для Andrey-MSK
3397 / 2283 / 388
Регистрация: 14.08.2018
Сообщений: 7,758
Записей в блоге: 4
22.04.2024, 11:22
Цитата Сообщение от AndreyVorobey Посмотреть сообщение
это что за имя такое?)
Мы Николай II
1
2810 / 1679 / 885
Регистрация: 14.04.2015
Сообщений: 5,723
22.04.2024, 11:23
Andrey-MSK, по паспорту?)
0
2298 / 1614 / 400
Регистрация: 26.06.2017
Сообщений: 4,780
Записей в блоге: 1
22.04.2024, 11:33
Цитата Сообщение от AndreyVorobey Посмотреть сообщение
это что за имя такое?
Самое обычное. Среди славян это редкость, а вот у буржуев бывает.
0
 Аватар для Andrey-MSK
3397 / 2283 / 388
Регистрация: 14.08.2018
Сообщений: 7,758
Записей в блоге: 4
22.04.2024, 11:38
Цитата Сообщение от AndreyVorobey Посмотреть сообщение
по паспорту?)
А то
0
Эксперт JavaЭксперт по электроникеЭксперт .NET
 Аватар для wizard41
3463 / 2784 / 575
Регистрация: 04.09.2018
Сообщений: 8,757
Записей в блоге: 3
22.04.2024, 11:40
Цитата Сообщение от Uswer Посмотреть сообщение
До сих пор в именах могут встречаться цифры
Это в каких именах? Типа "Стерво4ка"?
2
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
22.04.2024, 11:40

Разные условия в разных столбцах
Всем привет! У меня очередной вопрос по выборке. Предположим есть простенькая таблица ID | номер | дата регистрации 111 Ц1111...

Как задать разные условия ввода?
В форме ввода используется радиокнопка и обычный ввод в строку. И когда я задаю параметры input, то поле радиокнопки тоже увеличивается. ...

Разные условия для разных сцен
Как указать условие: если игрок на одной сцене - на объектах активированы одни компоненты, если на другой - другие. Не хочется создавать...

Считывание большого текста из TextBox
У меня есть поле Textbox, в которое вводят большой текст. Для считывания я использовал свойство Text, хотелось бы узнать, как считывать...

Обработка большого количества textbox
Суть: в текстбоксы, расположенные по два ряда вводятся цифровые значения. Эти значения по нажатию button2 делятся, перемножаются и...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
35
Ответ Создать тему
Новые блоги и статьи
Nekobox - outbounds[0].transport: unknown transport type: raw
damix 01.10.2026
Фикс ошибки Правым кликом по серверу -> отладочная информация -> edit Заменить "net": "raw", на "net": "tcp", Нажать кнопку reload.
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU. Опрашиваются регистры. . .
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка: Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru