如何检查所有文本框是不是已填充? [复制]

Posted

技术标签:

【中文标题】如何检查所有文本框是不是已填充? [复制]【英文标题】: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 进行检查。 是的,它奏效了。当我调用子容器时。谢谢。 【参考方案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,并且无论是否出现更多空文本框都将保持这种状态,然后您使用该标志来启用/禁用按钮。

【讨论】:

当我直接调用子容器时,代码运行良好。

以上是关于如何检查所有文本框是不是已填充? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

您是不是必须在所有文本框实际填充之前显示每个选项卡?

通过消除除 seacrhed 行之外的所有其他行,通过文本框在已填充的列表视图中搜索

jQuery 脚本在文本框中显示 NaN,如何删除 NaN? [复制]

检查是不是有任何文本框为空 wpf

VBA验证文本框中是不是存在文本,然后检查日期是不是格式正确

易语言 取剪切板文本