如果combobox1和combobox2为true,则更新combobox3中的项目

时间:2014-03-21 19:48:42

标签: c# if-statement combobox

如果cmbCourse,cmbYear和cmbSems满足要求,我想添加新项目/更改cmbSection中的项目。我尝试使用此代码,但cmbSection不会添加新项目/更改项目。

private void AddNewStudent_Load(object sender, EventArgs e)
    {
        if (cmbCourse.SelectedItem.Equals("BSIT"))
        {
            if (cmbYear.SelectedItem.Equals("1st"))
            {
                if (cmbSems.SelectedItem.Equals("1st"))
                {
                    cmbSection.Items.Add("IT101C");
                    cmbSection.Items.Add("IT102C");
                    cmbSection.Items.Add("IT103C");
                    cmbSection.Items.Add("IT104C");
                }
                else if (cmbSems.SelectedItem.Equals("2nd"))
                {
                    cmbSection.Items.Add("IT201C");
                    cmbSection.Items.Add("IT202C");
                    cmbSection.Items.Add("IT203C");
                    cmbSection.Items.Add("IT204C");
                }
            }
            else if (cmbYear.SelectedItem.Equals("2nd"))
            {
                if (cmbSems.SelectedItem.Equals("1st"))
                {
                    cmbSection.Items.Add("IT301C");
                    cmbSection.Items.Add("IT302C");
                    cmbSection.Items.Add("IT303C");
                    cmbSection.Items.Add("IT304C");
                }
                else if (cmbSems.SelectedItem.Equals("2nd"))
                {
                    cmbSection.Items.Add("IT401C");
                    cmbSection.Items.Add("IT402C");
                    cmbSection.Items.Add("IT403C");
                    cmbSection.Items.Add("IT404C");
                }
            }
        }
    }

2 个答案:

答案 0 :(得分:1)

我认为你应该在C#中使用事件。 您注册了cmbCourse ==>的事件SelectedIndexChanged。当cmbCourse更改选定索引时,您将新数据加载到cmbYear。
您注册了cmbYear ==>的事件SelectedIndexChanged。当cmbYear更改选定索引时,您将新数据加载到cmbSems中。

您注册cmbSems的事件SelectedIndexChanged ==>当cmbSems更改选定索引时,您将新数据加载到cmbSection中。

答案 1 :(得分:0)

您正在检查表单加载时的所有条件;我假设您要在用户更改其中一个组合框中的选项时进行检查,在这种情况下,正如tauitdnmd所述,SelectedIndexChanged是您应该使用的事件,而不是Form.Load。您可以将每个ComboxBox的SelectedIndexChanged事件设置为由单个方法处理,即您拥有的方法(尽管我强烈建议更改名称)。

但是,如果您只是简单地更改正在处理的事件,则使用Items.Add将导致新选项与旧选项一起添加,从而快速创建极长且冗余的下拉列表。解决方法是在使用Items.Clear()添加所有相关选项之前清除相关的每个ComboBox。

@Vulcronos:我使用相同的代码创建了一个测试应用程序,只有点击按钮作为事件,SelectedItem.Equals()检查似乎工作正常(尽管使用它的有效性)。