3

いくつかのチェックボックスとテキストボックスがあります。特定のチェックボックスをチェックすると、テキストボックスと他の指定されたチェックボックスが無効になります。

コードはテキストボックスに対して正常に機能します。ステートメントを追加する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;
    }
4

3 に答える 3

6

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;
}
于 2013-04-11T18:54:48.000 に答える
1

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;
    }
}
于 2013-04-11T18:56:43.223 に答える
1

次のように、else を括弧で囲む必要があります。

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
{
    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;
于 2013-04-11T18:54:24.610 に答える