Как проверить, является ли текстовое поле пустым, используя список элементов управления текстового поля? - PullRequest
0 голосов
/ 17 февраля 2012

Я создал список всех текстовых полей на вкладке в моем приложении winforms c #. Теперь я хотел бы проверить каждое текстовое поле в списке и проверить, не является ли это текстовое поле пустым. Если это так, я хотел бы использовать поставщика ошибок, чтобы дать пользователю знать, что он должен быть заполнен. Вот код, который я сейчас использую.

//gathers the controls and adds them to a list on the main form
public static List<Control> GetControls(Control form, string type)
    {
        var controlList = new List<Control>();
        foreach (Control childControl in form.Controls)
        {
            if (childControl.Name.Contains(type))
            {
                controlList.Add(childControl);
            }
            if (childControl.HasChildren) GetControls(form, type);
        }
        return controlList;
    }


//Created in a class called DataVerification
public bool IsNotEmpty(string value, out string errorMessage)
    {
        errorMessage = "";
        if (value.Length == 0)
        {
            errorMessage = "This Field Is Required";
            return false;
        }
        return false;
    }


//method that uses the DataVerification class and the error provider
 public void IsNotEmpty()
    {
        availableControls = GetControls(this.tabPage1, "Text");
        string errorMessage;
        DataVerification verify = new DataVerification();
        foreach (Control c in availableControls)
        {
            if (!verify.IsNotEmpty(c.Text, out errorMessage))
            {
                ErrorProvider.SetError(c, errorMessage);
            }
        }
    }

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

Ответы [ 4 ]

1 голос
/ 17 февраля 2012

Метод IsNotEmpty является логическим;всегда возвращать false.

public bool IsNotEmpty(string value, out string errorMessage)
{
    errorMessage = "";
    if (value.Length == 0)
    {
        errorMessage = "This Field Is Required";
        return true; //instead of false
    }
    return false;
}
0 голосов
/ 17 февраля 2012

Я не уверен, что понимаю вопрос, но если вы хотите узнать, где находятся TextBox элементы управления и проверить только эти, вы можете сделать следующее:

foreach (Control c in availableControls)
{
    TextBox t = c as TextBox;
    if (t != null && !verify.IsNotEmpty(t.Text, out errorMessage))
        ErrorProvider.SetError(t, errorMessage);
}
0 голосов
/ 17 февраля 2012

Я не совсем понимаю, какой у вас вопрос ...

То, что вы можете использовать для проверки, если значение текстового поля пусто, это String.IsNullOrEmpty ();

:

 if (!verify.IsNotEmpty(c.Text, out errorMessage))
            {
                ErrorProvider.SetError(c, errorMessage);
            }

Просто сделайте это:

 if (String.IsNullOrEmpty(c.Text))
            {
                ErrorProvider.SetError(c, "This field is required!");
            }

Кроме того, я рекомендую немного изменить схему именования.Хорошей практикой является наличие методов и тому подобное в «правдивой» форме.Таким образом, вместо IsNotEmpty, IsEmpty будет легче читать / поддерживать.Эта строка !verify.IsNotEmpty() выдает двойной минус!

РЕДАКТИРОВАТЬ: Как сказал ахмад: ваш метод всегда возвращает false.Следует читать:

public bool IsNotEmpty(string value, out string errorMessage)
    {
        if (value.Length == 0)
        {
            errorMessage = "This Field Is Required";
            return false;
        }
        return true;
    }
0 голосов
/ 17 февраля 2012

Вы можете преобразовать элемент управления в текстовое поле следующим образом:

            TextBox t = (TextBox)c;

, а затем использовать t.Text для выполнения проверки.

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