如果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");
}
}
}
}
答案 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()
检查似乎工作正常(尽管使用它的有效性)。