首页 > 解决方案 > 如何检查所有文本框是否已填充?

问题描述

我创建了一个带有多个面板的表单,并使用面板控件来显示相关信息。第三个面板有 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 = " ";
}

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

标签: c#formstextbox

解决方案


我测试了您的代码,它输入了哔哔声,请考虑 Ahmed 关于文本框位于另一个容器或表单中的评论。

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

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

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,并且无论是否出现更多空文本框都会保持这种状态,然后您使用该标志来启用/禁用按钮。


推荐阅读