在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的更多信息。

通过实现这一点,您将遵循开放关闭原则,这意味着无论以后要添加多少项,您现有的代码都不需要修改,而是可以扩展。

10-08 14:50