Marc-IT Ответов: 1

C# Игнорировать пустые текстовые поля


Привет,

я искал способ проверить, все ли текстовые поля из формы пусты, а если нет, то показать сообщение. Некоторые из них не видны.
У меня есть код ниже, но он почему-то не работает, когда я нажимаю кнопку ОК, я получаю ошибку, потому что текстовое поле пусто.

Кто-нибудь может помочь, пожалуйста ?

Заранее спасибо

Что я уже пробовал:

foreach (Control c in Controls)
{
    if (c is TextBox && c.Visible && string.IsNullOrEmpty(c.Text))
    {
        MessageBox.Show($"TextBox {c.Name} is empty");
    }
}

Philippe Mori

Попробуйте улучшить форматирование вопроса и исправить орфографические ошибки.

Marc-IT

Спасибо за подсказку, я думаю, что теперь все гораздо яснее.

Philippe Mori

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

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

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

Таким образом, в вашем коде я бы добавил c.Focus(); break; после отображения сообщения пользователю.

Marc-IT

все текстовые поля должны быть проверены, это только для того, чтобы предотвратить сбой приложения.
если в одном текстовом поле нет никакой информации, приложение выходит из строя из-за Формулы.
некоторые из них скрыты и видны только в том случае, если пользователь выбирает определенные параметры в первой форме.
Простая версия заключается в том, что все текстовые поля должны быть проверены.

Marc-IT

это странно, я думаю, что код в порядке, но по какой-то причине он не загружается.
приложение работает, но это условие не применяется

1 Ответов

Рейтинг:
11

Michael_Davies

Надеюсь, я правильно понял, но почему бы не использовать элементы управления видимым состоянием, чтобы определить, следует ли тестировать коробку или нет;

if (larg.Text == string.Empty)
{
    if (larg.Visible == False)
    {
      MessageBox.Show("info missing", "Warning");
      return;
    }
}


И так далее.


Marc-IT

Спасибо за ответ, я попробовал это решение, но получил ошибку в Hidden и False.
"TextBox" не содержит определения для "Hidden", и ни один метод расширения "Hidden", принимающий первый аргумент типа "TextBox", не может быть найден (отсутствует ли директива using или ссылка на сборку?)
и
Имя False не существует в текущем контексте.

есть идеи ?

Marc-IT

я изменил его на
если (ларг.Видимое == правда)
он принимает код, но ничего не делает

Michael_Davies

что значит "ничего не делает", пройдитесь с отладчиком, чтобы посмотреть, что происходит.

Покажите свой измененный код.