0

大家好,我是编程和学习 C# 的新手。我只是一个初学者。

我有一个带有GroupBox控件的表单,其中GroupBox有四个TextBox控件。还有一个button

我想TextBox通过单击来测试是否为空button

这是我的代码,但它不能正常工作。

如果他们有时间,请有人帮助我吗?

private bool IsThereDataInControl(Control control) {
  bool isControlEmpty = true;
  foreach(Control c in control.Controls) {
    if (c is TextBox) {
      if (!String.IsNullOrEmpty(((TextBox) c).Text)) {
        isControlEmpty = false;
      }
    }
    if (c.HasChildren) {
      IsThereDataInControl(c);
    }
  }
  return isControlEmpty;
}

private void button1_Click(object sender, EventArgs e) {
  bool validate = IsThereDataInControl(this);
  MessageBox.Show(validate.ToString());
}

messagebox文本框中有文本时显示“真”。

4

2 回答 2

0

改变

if (c.HasChildren) {
  IsThereDataInControl(c);
}

进入

if (c.HasChildren && !IsThereDataInControl(c)) {
    isControlEmpty = false;
}

我不确定它是否有效,因为我无法访问 C# 编译器 atm。

如果控件在您的代码中有子控件,则调用IsThereDataInControl(c);,但对结果不执行任何操作。

于 2013-05-15T15:25:40.107 回答
0

如果要验证所有子子项,可以递归地进行:

  foreach(Control c in control.Controls) {
    if (c is TextBox) {
        if (!String.IsNullOrEmpty(((TextBox) c).Text)) {
            return true;
        }
    }
    else if (c.HasChildren) {
        if (IsThereDataInControl(c)) {
            return true;
        }
    }
}
return false;

代码可能需要稍微修改一下,我目前没有ac# IDE。

于 2013-05-15T15:38:02.037 回答