1

私のコードは、すべてのチェックボックスを選択するよりもchckAll.Checkedの場合にのみ実行します...私が達成したいのは、チェックボックスのいずれかが選択されていないときで、すべてのチェックボックスを選択した後、chckAllが選択されていません....また、すべての場合チェックボックスを 1 つずつ選択すると、chckAll が選択されます...どうすればよいですか?

private void chckAll_CheckedChanged(object sender, EventArgs e)
        {
            if (chckAll.Checked)
            {
                foreach (Control ctrl in checkBoxesPanel3.Controls)
                {
                    CheckBox chkboxes = ctrl as CheckBox;
                    if (chkboxes != null)
                    {
                        chkboxes.Checked = true;

                    }

                }

            }           

        }
4

1 に答える 1

5

以下のイベントを chckAll を除く他のすべてのチェックボックスに追加します

private void checkBox_CheckedChanged(object sender, EventArgs e)
{
    CheckFlg = true;
    if (!CheckAllFlg)
    {
        chckAll.Checked = checkBoxesPanel3.Controls.OfType<CheckBox>().Where(x => x.Name != "chckAll").All(c => c.Checked);  
    }
    CheckFlg = false;
}

private void chckAll_CheckedChanged(object sender, EventArgs e)
{
    CheckAllFlg = true;

    if (!CheckFlg)
    {
        foreach (CheckBox ctrl in checkBoxesPanel3.Controls.OfType<CheckBox>().Where(x => x.Name != "chckAll"))
        {
            ctrl.Checked = chckAll.Checked;
        }
    }
    CheckAllFlg = false;
}

以下のように2つのプロパティを定義する必要があります

public partial class Form1
{
    public bool CheckAllFlg { get; set; }
    public bool CheckFlg { get; set; }
于 2013-09-06T03:08:47.430 に答える