Советы по проверке, если входные данные пусты (.NET) - PullRequest
1 голос
/ 28 октября 2009

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

Единственный способ, которым я до сих пор это делал, - это 8 вложенных операторов IF, и это выглядит неорганизованным и кажется ужасным способом сделать это.

Может кто-нибудь сказать мне лучший способ сделать это? Если есть, конечно.

Спасибо:)

Ответы [ 4 ]

1 голос
/ 28 октября 2009

Во время загрузки формы создайте коллекцию всех текстовых полей, которые не могут быть пустыми. Тогда просто просматривайте их. Это похоже на ответ @Kronon, но без панели. Мне нравится менять цвет фона, чтобы указать, какие поля не должны быть пустыми.

public partial class MainForm
{
    private List<TextBox> mandatoryTextBoxes;

    private void MainForm_Load(object sender, EventArgs e) {
        mandatoryTextBoxes = new List<TextBox>();
        mandatoryTextBoxes.Add(this.textBox1);
        // add other textboxes1
    }

    private bool CheckMandatoryFields() {
        bool allFieldsPresent = true;
        foreach (TextBox tb in this.mandatoryTextBoxes) {
            if (tb.Text.Length == 0) {
                tb.BackColor = Color.Yellow;
                allFieldsPresent = false;
            } else {
                tb.BackColor = Color.White;
            }
        }
        return allFieldsPresent;
    }

    private void DoWork() {
        if (!this.CheckMandatoryFields()) {
            this.SetError("Indicated fields cannot be empty");
            return;
        }
        // do real work here
    }
}
1 голос
/ 28 октября 2009

Хм, а как насчет того, чтобы сгруппировать 8 текстовых полей в 1 панель и вместо этого перебрать каждое из них? Примерно так:

bool text = true;

foreach(Control ctrl in Panel)
{
    TextBox textbox = ctrl as TextBox;
        if (box.Text.Length == 0)
        {
            DisplayErrorMsg();
            text = false;
        }
}

if(text) ExecuteCode();
1 голос
/ 28 октября 2009

Это winforms или webforms?

Если Winforms, посмотрите на элемент управления ErrorProvider.
Если Webforms, посмотрите на элементы управления проверки (в частности, RequiredFieldValidator).

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

0 голосов
/ 28 октября 2009

Просто используйте RequiredFieldValidator вместе с полем ValidatorSummary для отображения сообщений проверки.

Дайте мне знать, если это поможет.

Pratik

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