关于检查输入是否为空的建议(.NET)

时间:2009-10-28 04:12:03

标签: .net winforms

在我的表单中,我有8个文本框。所有这些都需要填写,我想在运行剩下的代码之前检查它们是否已填写。

到目前为止,我完成它的唯一方法是8个嵌套的IF语句,这看起来没有组织,看起来像是一种可怕的方式。

有人可以告诉我更好的方法吗?如果有的话,当然。

谢谢:)

4 个答案:

答案 0 :(得分:1)

这是winforms还是webforms?

如果是Winforms,请查看ErrorProvider控件 如果是Webforms,请查看验证控件(特别是RequiredFieldValidator)。

在任何一种情况下,我都可能会创建一个自定义控件,将验证与文本框一起包装,您只需将表单放在需要它的表单上。

答案 1 :(得分:1)

嗯,如何将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();

答案 2 :(得分:1)

在表单加载时,创建一个不能为空的所有文本框的集合。然后简单地循环它们。这类似于@Kronon的答案,但没有Panel。我喜欢更改背景颜色以指示哪些字段不应为空。

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
    }
}

答案 3 :(得分:0)

只需使用RequiredFieldValidator和ValidatorSummary字段即可显示验证消息。

如果有帮助,请告诉我。

PRATIK