c#winforms中所有文本框都不为空后如何启用按钮?

Posted

技术标签:

【中文标题】c#winforms中所有文本框都不为空后如何启用按钮?【英文标题】:How to enable button after all textboxes are not empty in c# winforms? 【发布时间】:2021-07-03 17:19:43 【问题描述】:

在我的所有文本框都不为空之后,如何将按钮属性设置为 enabled=true? 我正在学习编程,我的应用程序很简单。

当我的一个文本框有文本时,我知道如何启用此属性,但事实并非如此。

用例是用户需要在两个文本框中输入数据,然后才能点击 btn。 如何以最简单的方式验证所有表单然后启用按钮?

只有 2 tb: https://i.imgur.com/JUslNWE.png

【问题讨论】:

作为一个选项,您可以使用单个事件处理程序处理所有TextBox 控件的Validating 事件并检查它们是否为空,然后启用Button @RezaAghaei 我该怎么做?这是行不通的。私人无效 generateHashBtn_Validating(object sender, System.ComponentModel.CancelEventArgs e) if (loginTextBox.Text != String.Empty && passTextBox.Text != String.Empty) generateHashBtn.Enabled = true; 【参考方案1】:

您需要创建一个TextBox_TextChanged 事件并订阅所有文本框。

private void TextBox_TextChanged(object sender, EventArgs e)

    int notEmptyTextBoxCount = 0;
    int textBoxCount = 0;
    foreach (var item in Controls)
    
        if (item is TextBox txtb)
        
            textBoxCount++;
            if (txtb.Text != String.Empty)
                notEmptyTextBoxCount++;
        
    
    if (textBoxCount == notEmptyTextBoxCount)
        button.Enabled = true;
    else
        button.Enabled = false;

【讨论】:

button.Enabled = !this.Controls.OfType<TextBox>().Where(x => string.IsNullOrEmpty(x.Text)).Any();【参考方案2】:

感谢大家的反馈。

我已经设法做到了:

private void ValidateTextBoxes()
    
        if (loginTextBox.Text.Length != 0 && passTextBox.Text.Length != 0)
        
            generateHashBtn.Enabled = true;
        
        else
        
            generateHashBtn.Enabled = false;
        
    

    private void TextBox1_TextChanged(object sender, EventArgs e)
    
        ValidateTextBoxes();
    

    private void TextBox2_TextChanged(object sender, EventArgs e)
    
        ValidateTextBoxes();
    

【讨论】:

如果有人在 box1 中写入,然后在 box2 中写入,则启用该按钮。如果他们删除了 box1 或 box2 中的内容,该按钮将保持启用状态。 感谢@LarsTech。我已经编辑了我以前的帖子。

以上是关于c#winforms中所有文本框都不为空后如何启用按钮?的主要内容,如果未能解决你的问题,请参考以下文章

SwiftUI:仅当输入不为空时才启用保存按钮

如果全部都不为空,则组合文本字段结果 RxSwift

MAX(),但前提是所有值都不为空

MS Access VBA,只有在所有必需的文本框都包含有效数据后才启用按钮的有效方法

在格式化我的计算机并发现我的所有数据库为空后移动 Xamp

MSSQL - 仅当所有值都不为空时才插入值