在我的表单中,我有8个文本框。所有这些都需要填写,我想在运行剩下的代码之前检查它们是否已填写。
到目前为止,我完成它的唯一方法是8个嵌套的IF语句,这看起来没有组织,看起来像是一种可怕的方式。
有人可以告诉我更好的方法吗?如果有的话,当然。
谢谢:)
答案 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