.net 当表单的所有字段都获取字段时,如何启用按钮?

.net 当表单的所有字段都获取字段时,如何启用按钮?,.net,winforms,c#-4.0,.net,Winforms,C# 4.0,在我的表单中,几乎有30-35个控件,有些是启用的,有些是禁用的,如配偶姓名被禁用,如果此人未婚,并且如果用户选择他们已婚,则控件被启用 最初,提交按钮是禁用的,但一旦所有启用的字段都填写完毕,我希望提交按钮自动启用 我已经为此编写了此代码 if ((nametxt.Text != null) && (f_nametxt.Text != null) && (m_nametxt.Text != null) && (gotra_txt.Text

在我的表单中,几乎有30-35个控件,有些是启用的,有些是禁用的,如配偶姓名被禁用,如果此人未婚,并且如果用户选择他们已婚,则控件被启用

最初,提交按钮是禁用的,但一旦所有启用的字段都填写完毕,我希望提交按钮自动启用

我已经为此编写了此代码

if ((nametxt.Text != null) && (f_nametxt.Text != null) &&
    (m_nametxt.Text != null) && (gotra_txt.Text != null) &&
    (panthcb.Text != null) && (fhntext.Text != null) &&
    (edulvlcb.Text != null) && (bloodcb.Text != null) &&
    (MarritalStatus != null) && (s_nametxt.Text != null) &&
    (s_edulvlcb.Text != null) && (s_bgcb.Text != null) &&
    (ressi_addresstxt.Text != null) && (ressi_phnotxt.Text != null) &&
    (mobi_notxt.Text != null) && (office_addresstxt.Text != null) &&
    (occup_typetxt.Text != null) && (occup_naturecb.Text != null) &&
    (office_phno1txt.Text != null) && (office_mobnotxt.Text != null))
{
   submit_addbtn.Enabled = true;
}
我不知道这是否正确,也不知道我应该在哪里(以何种形式)这样做

请告诉我并帮助我

以下是文本框的“代码完成”按键事件,此事件不会触发

 private void mobi_notxt_KeyDown(object sender, KeyEventArgs e)
    {
        foreach (Control c in this.Controls)
        {
            TextBox txt = c as TextBox;
            if (txt != null)
            {
                if (!(txt.Enabled && txt.Text != ""))
                {
                    allFilled = false;
                    break;
                }
            }
        }

        if (allFilled)
        {
            submit_addbtn.Enabled = true;
        }
        else
        {
            submit_addbtn.Enabled = false;
        }
    }

您可以遍历所有文本框控件,并检查它们是否已启用。如果是,请检查文本属性

bool allFilled = true;

foreach (Control c in this.Controls)
{
    TextBox txt = c as TextBox;
    if (txt != null)
    {
        if (txt.Enabled && txt.Text == "")
        {
            allFilled = false;
            break;
        }
    }
}

if (allFilled) 
{
    button1.Enabled = true;
} else
{
    button1.Enabled = false;
}
因此,如果每个启用的字段都包含某些内容,则allFilled布尔值将为true,而在另一种情况下为false

你可以在任何你喜欢的活动上分配它。
例如,在指定给所有文本框的按下键事件中,您可能希望使用计时器每隔一两秒检查文本框的状态,以便自动启用“提交”按钮。i、 e.在计时器的滴答声事件中,调用包含上述
foreach
循环的方法,并使用
allFilled
bool设置
button.Enabled=true
@Kobunite不是每个文本框上都有一个按键关闭事件更好吗?然后,它会在所有正确的时刻触发,而不是在不必要的时候随机触发。一个按键关闭事件不能像在每个文本框上按下任何键时一样,快速连续地触发许多调用吗?我可能错了,我已经有一段时间没有使用按键事件了。会的,但我想你不会注意到。我在表单中使用键关闭事件只是为了检查您是否按enter键并提交表单。这并不是一个明显的区别,这意味着我已经在类级别声明bool全部填充,在我的代码中存在的所有文本框的键关闭或任何其他事件中,我应该粘贴此代码。但是我必须在哪里对分配给所有文本框的if allfilled=true按钮进行编码。enable=trueIs
mobi\u notxt\u KeyDown