c# - 在 CheckedChange 事件中禁用/启用多个项目

标签 c# winforms checkbox

我有几个复选框和一个文本框。当我选中某个复选框时,它会禁用文本框和其他指定的复选框。

该代码适用于文本框。当我添加 else 语句时,它仍然适用于文本框,但不适用于复选框。如果我省略 else 并且只使用 if 来禁用它们,它就可以工作。如果复选框未选中,我需要它来重新启用它们。

我在一个面板中有所有相关的复选框。

    private void noModemChkbox_CheckedChanged(object sender, EventArgs e)
    {
        if (noModemChkbox.Checked == true)
        {
            custModemText.Enabled = false;
            pwrCbx.Enabled = false;
            e1Cbx.Enabled = false;
            e2Cbx.Enabled = false;
            e3Cbx.Enabled = false;
            e4Cbx.Enabled = false;
            dslblinkCbx.Enabled = false;
            enetCbx.Enabled = false;
            dslCbx.Enabled = false;
            inetCbx.Enabled = false;
            inetredCbx.Enabled = false;
            wlanCbx.Enabled = false;
            activityChkbox.Enabled = false;
        }
        else
            custModemText.Enabled = true;
        pwrCbx.Enabled = true;
        e1Cbx.Enabled = true;
        e2Cbx.Enabled = true;
        e3Cbx.Enabled = true;
        e4Cbx.Enabled = true;
        dslblinkCbx.Enabled = true;
        enetCbx.Enabled = true;
        dslCbx.Enabled = true;
        inetCbx.Enabled = true;
        inetredCbx.Enabled = true;
        wlanCbx.Enabled = true;
        activityChkbox.Enabled = true;
    }

最佳答案

你忘了在 else 语句两边加上大括号:

private void noModemChkbox_CheckedChanged(object sender, EventArgs e)
{
    if (noModemChkbox.Checked == true)
    {
        custModemText.Enabled = false;
        pwrCbx.Enabled = false;
        e1Cbx.Enabled = false;
        e2Cbx.Enabled = false;
        e3Cbx.Enabled = false;
        e4Cbx.Enabled = false;
        dslblinkCbx.Enabled = false;
        enetCbx.Enabled = false;
        dslCbx.Enabled = false;
        inetCbx.Enabled = false;
        inetredCbx.Enabled = false;
        wlanCbx.Enabled = false;
        activityChkbox.Enabled = false;
    }
    else
    {
        custModemText.Enabled = true;
        pwrCbx.Enabled = true;
        e1Cbx.Enabled = true;
        e2Cbx.Enabled = true;
        e3Cbx.Enabled = true;
        e4Cbx.Enabled = true;
        dslblinkCbx.Enabled = true;
        enetCbx.Enabled = true;
        dslCbx.Enabled = true;
        inetCbx.Enabled = true;
        inetredCbx.Enabled = true;
        wlanCbx.Enabled = true;
        activityChkbox.Enabled = true;
    }
}

这不是更简单吗? :

private void noModemChkbox_CheckedChanged(object sender, EventArgs e)
{
    bool bEnabled = !noModemChkbox.Checked;

    custModemText.Enabled = bEnabled;
    pwrCbx.Enabled = bEnabled;
    e1Cbx.Enabled = bEnabled;
    e2Cbx.Enabled = bEnabled;
    e3Cbx.Enabled = bEnabled;
    e4Cbx.Enabled = bEnabled;
    dslblinkCbx.Enabled = bEnabled;
    enetCbx.Enabled = bEnabled;
    dslCbx.Enabled = bEnabled;
    inetCbx.Enabled = bEnabled;
    inetredCbx.Enabled = bEnabled;
    wlanCbx.Enabled = bEnabled;
    activityChkbox.Enabled = bEnabled;
}

关于c# - 在 CheckedChange 事件中禁用/启用多个项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15956569/

相关文章:

c# - 如何覆盖单个自动映射器属性映射?

c# - 将距离添加到 GPS 坐标

c# - 在Unity C#中使用两个麦克风进行录音

javascript - Angular JS 过滤器 搜索

jquery - onclick 获取复选框的当前值

c# - 如何仅使用 Microsoft 个人帐户在 Microsoft Graph 中进行身份验证?

winforms - FolderBrowserDialog 置于最前面

c# - 无法使用 Zkemkeeper SDK 调用事件

c# - 可以处理点击的透明 Windows 窗体

jquery - 如何使用标签设置多个附加复选框的样式