在C#中實現復選框的級聯選擇可以通過事件處理來實現。我們可以在父復選框的CheckedChanged事件中處理子復選框的選中狀態。
以下是一個示例代碼,實現了一個父復選框和多個子復選框的級聯選擇:
private void parentCheckBox_CheckedChanged(object sender, EventArgs e)
{
foreach (var control in Controls)
{
if (control is CheckBox checkBox)
{
checkBox.Checked = parentCheckBox.Checked;
}
}
}
private void childCheckBox_CheckedChanged(object sender, EventArgs e)
{
bool allChecked = true;
foreach (var control in Controls)
{
if (control is CheckBox checkBox && checkBox != parentCheckBox)
{
if (!checkBox.Checked)
{
allChecked = false;
break;
}
}
}
parentCheckBox.Checked = allChecked;
}
在這個示例代碼中,parentCheckBox是父復選框,childCheckBox是子復選框。當父復選框的選中狀態改變時,會將所有子復選框的選中狀態設置為與父復選框相同;當任意一個子復選框的選中狀態改變時,會判斷所有子復選框的選中狀態,如果所有子復選框都被選中,則將父復選框的選中狀態設置為選中,否則設置為未選中。
你可以根據實際需求進行修改和擴展這個示例代碼,以實現更復雜的級聯選擇功能。