3

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

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

4 回答 4

0

我会为此使用代表和事件。

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

如果有您不想保持启用的控件,您可以添加一个方法。

于 2013-07-31T12:04:48.330 回答
0

在 SelectedIndexChanged 事件上检查所选对象是否与您要禁用其他控件的对象相同,然后将其禁用。

protected void ddltext_SelectedIndexChanged(object sender, EventArgs e)
{
    if (ddlPerc.SelectedValue.Equals("0.01"))
    {
        txtbox.Enabled = false;
    }
}
于 2013-07-31T11:51:08.370 回答
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 ;

    }
于 2013-07-31T11:49:04.603 回答
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;
           }
        }
    }
于 2013-07-31T11:45:30.827 回答