如何在表单的所有字段获取字段时启用按钮?

时间:2013-04-30 10:44:12

标签: .net winforms c#-4.0

在我的表格中,几乎有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;
}

我不知道这是否正确以及我应该在哪里(在哪种情况下)。

请告诉我并帮助我。

以下是代码完成文本框的keydown事件,此事件未触发

 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;
        }
    }

1 个答案:

答案 0 :(得分:1)

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

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。

您可以根据自己喜欢的任何事件进行分配。 例如,您分配给所有文本框的按键事件