【问题标题】:How to check all the Text boxes are filled? [duplicate]如何检查所有文本框是否已填充? [复制]
【发布时间】:2020-07-27 12:30:28
【问题描述】:

我创建了一个带有多个面板的表单,并使用面板控件来显示相关信息。第三个面板有 20 个文本框,我想检查是否填写了所有详细信息。所以我只是在下面使用了这段代码。

private void Calculatebutton_Click(object sender, EventArgs e)
{
    foreach(Control c in Controls)
    {
        if(c is TextBox)
        {
            Console.Beep();
            if (!String.IsNullOrWhiteSpace(textbox.Text) &&
                        !String.IsNullOrEmpty(textbox.Text))
                {
                    SaveToDatabaseButton.Enabled = true;
                }
        }
    }
  }

问题是 if 语句中的条件变得错误,我听不到任何哔声或启用其他按钮。如果我从“c is TextBox”更改为“c is Panel”,我可以听到三声哔哔声。我也试过这样的代码

if(c is TextBox)
{
    c.Text = " ";
}

但是没有任何效果。请帮助我克服这个问题。提前致谢。

【问题讨论】:

  • 请注意,这里的Controls 表示this.Controls,它返回直接放置在表单上的控件。不包括放置在子容器(如 Panel 或 GroupBox)中的任何控件。检查链接的问题,了解如何迭代所有控件。
  • 请尝试在您的文本上调用.Trim 方法,然后再使用String.IsNullOrEmpty 进行检查。
  • 是的,它奏效了。当我调用子容器时。谢谢。

标签: c# forms textbox


【解决方案1】:

我测试了你的代码,它可以很好地输入哔哔声,考虑一下 Ahmed 的关于文本框在另一个容器或表单中的 cmets。

与您的问题没有直接关系,但是据我所知,何时启用按钮的逻辑是不正确的,因为只有一个不为空的文本框就足以使按钮保存到数据库,我假设您希望所有文本框都不为空。

如果是这样的话,我会建议这样的事情:

private void Calculatebutton_Click(object sender, EventArgs e)
{
    var isThereEmptyTextBox = false;
    foreach(Control c in Controls)
    {
        if(c is TextBox)
        {
            Console.Beep();
            if (!String.IsNullOrWhiteSpace(textbox.Text) &&
                        !String.IsNullOrEmpty(textbox.Text))
                {
                    isThereEmptyTextBox = true;
                }
        }
    }
    SaveToDatabaseButton.Enabled = !isThereEmptyTextBox;
  }

只要一个文本框为空,该标志就会设置为 true,并且无论是否出现更多空文本框都将保持这种状态,然后您使用该标志来启用/禁用按钮。

【讨论】:

  • 当我直接调用子容器时,代码运行良好。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-04-04
  • 1970-01-01
  • 2014-07-16
  • 2018-01-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多