我正在编写一个相当简单的应用程序,用户可以在其中选择某些输入并处理数据。我遇到问题,当用户从其中一个组合框中选择特定字符串时,它不会禁用其他控件。基本上,当用户选择组合框并选择“启动”时,应禁用所有其他控件。
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;
}
}
答案 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)
检查所选对象是否与要禁用其他控件的对象相同,然后禁用它。
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;
如果您不想继续启用控件,则可以添加方法。