在C#中,在Windows窗体中,我使用了一个checkedListBox。
到目前为止,在我的checkedListBox中,我有3个项目。
和3系列的if / elseif语句。
我想采用一种巧妙的方式,根据所选项目的组合采取具体措施。
我在想一棵二叉树。
二叉树可以吗,或者在checkedListBox中有我不知道的方法/属性可以帮助我?
下面是当前代码:
private void checkedListBox1_SelectedIndexChanged(object sender, EventArgs e)
{
if (checkedListBox1.GetItemCheckState(0) == CheckState.Checked)
{
do_action_item0(current_parameters);
}
else if(checkedListBox1.GetItemCheckState(0) != CheckState.Checked)
{
undo_action_item0(previous_parameters);
}
if (checkedListBox1.GetItemCheckState(1) == CheckState.Checked)
{
do_action_item1(current_parameters);
}
else if (checkedListBox1.GetItemCheckState(1) != CheckState.Checked)
{
undo_action_item1(previous_parameters);
}
if (checkedListBox1.GetItemCheckState(2) == CheckState.Checked)
{
do_action_item2(current_parameters);
}
else if (checkedListBox1.GetItemCheckState(2) != CheckState.Checked)
{
undo_action_item2(previous_parameters);
}
}
最佳答案
鉴于您在复选框列表中有多个选择。您可以尝试针对此问题实施策略模式。基本上,您需要为每个变体创建策略。您可以阅读有关此here的更多信息。
通过实现这一点,您将遵循开放关闭原则,这意味着无论以后要添加多少项,您现有的代码都不需要修改,而是可以扩展。