0

グループ ボックスに 10 個のチェック ボックスがあります。「すべて」というラベルの付いた一番上のチェック ボックスは、「すべて」が true の場合、他の 9 つのチェック ボックスをオンにします。

他の 9 つのチェックボックスには、基本的に同じコードがあります。2 つのチェック ボックスのサンプルを次に示します。

private void ckDal_Click(object sender, EventArgs e)
    {
        if (ckDal.Checked == false)
            ckAll.Checked = false;
    }

    private void ckHou_Click(object sender, EventArgs e)
    {
        if (ckHou.Checked == false)
            ckAll.Checked = false;
    }

同じコードを繰り返すのは嫌いです。たった 1 つのイベント メソッドで上記を達成するデリゲートを作成するにはどうすればよいでしょうか。

4

2 に答える 2

2

Clickすべての CheckBox に対して単一のイベント ハンドラーを使用できます。イベントを発生させた実際の CheckBox は、senderパラメーターから使用できます。それを CheckBox タイプにキャストするだけです:

private void ck_Click(object sender, EventArgs e)
{
    if (!((CheckBox)sender).Checked)
        ckAll.Checked = false;
}

また、ブール値を true/false と比較する必要はありませんif。ステートメントで直接使用できます。

ところで、すべての CheckBoxes がチェックされたときのケースも確認ckAll.Checked = trueし、その場合に設定する必要があります。

于 2012-12-25T14:31:01.537 に答える
1
private void CheckBoxClick(object sender, EventArgs e)
{        
    if (!((CheckBox)sender).Checked)
        ckAll.Checked = false;
}
于 2012-12-25T14:31:10.580 に答える