选择特定组合框项时禁用控件

时间:2013-07-31 11:42:59

标签: c# winforms

我正在编写一个相当简单的应用程序,用户可以在其中选择某些输入并处理数据。我遇到问题,当用户从其中一个组合框中选择特定字符串时,它不会禁用其他控件。基本上,当用户选择组合框并选择“启动”时,应禁用所有其他控件。

private void cbalpha_SelectedIndexChanged(object sender, EventArgs e)
{
    var operatorcheckbox = (CheckBox)sender;
    foreach (Control cb in this.Controls)
        if ((StringtDataChoiceorSelect.SelectedItem != "(Initiate)")
        {
            continue;
        }
        else
        {
            cb.Enabled = operatorcheckbox.Checked;
        }
}

4 个答案:

答案 0 :(得分:0)

    private void cbalpha_SelectedIndexChanged(object sender, EventArgs e)
    {
        var operatorcheckbox =(CheckBox)sender;
        foreach (Control cb in this.Controls)
        {
           if ((StringtDataChoiceorSelect.SelectedItem != "(Initiate)")
           {
               if(!cb.Enabled)
               {
                  cb.Enabled = true;
               }
           }
           else
           {
               cb.Enabled = false;
           }
        }
    }

答案 1 :(得分:0)

如果要禁用所有控件,为什么使用复选框值来启用禁用。应该只是这个

private void cbalpha_SelectedIndexChanged(object sender, EventArgs e)
    {

        bool isEnabled = string.Compare(StringtDataChoiceorSelect.SelectedItem.ToString(),"(Initiate)",StringComparison.OrdinalIgnoreCase) == 0;
        foreach (Control cb in this.Controls)
            cb.Enabled = !isEnabled ;

    }

答案 2 :(得分:0)

在SelectedIndexChanged事件上

检查所选对象是否与要禁用其他控件的对象相同,然后禁用它。

protected void ddltext_SelectedIndexChanged(object sender, EventArgs e)
{
    if (ddlPerc.SelectedValue.Equals("0.01"))
    {
        txtbox.Enabled = false;
    }
}

答案 3 :(得分:0)

我为此使用代理和事件。

if(operatorcheckbox.Checked && 
    StringtDataChoiceorSelect.SelectedItem == "(Initiate)")
{
    EventHandler -= checkboxdelegate;
}
else
    EventHandler += checkboxdelegate;

如果您不想继续启用控件,则可以添加方法。