一个级联操作的问题,代码中有三个组合框,情况是当第一个框选中一项时,第二三个框就有数据被添加进去了(本来是没有数据的)。要实现在的功能是当再次在第一个框选中另一项时,第二三个框的数据就要更新,不能把原来的数据累加起来。但是三个框都有默认选定的项(--请选择--),是在窗体加载时指定的。如果用Clear清除二三框原有的数据的话,会出现报错,因为窗体加载时二三个框的默认选定项也被清除了。简单点:我要清除原有的数据时,不清除默认的选定项。下面的代码,请帮看一下,怎么实现。private void cb1_SelectedIndexChanged(object sender, EventArgs e)
        {
            string a =cb1.SelectedItem.ToString();//读取选中的项
            if (a == "所有年份")//判断是否选中“所有年份”一项
            {
                a = "2";//用数字2匹配所有符合的数据
            }
            try
            {
                string sql = string.Format("select 期号 from cch where 期号 like '{0}%'", a);//执行查询
                SqlCommand command = new SqlCommand(sql, DBH.connection);//创建sqlcommand对象
                DBH.connection.Open();//打开连接
                SqlDataReader datareader = command.ExecuteReader();//执行查询
                string r = "";//数据添加用的变量
                string h = "";//这个变量是关键,用来清除,执行了另一选项而添加新的数据时清除旧的数据
                if (a != "2")//这个if语句用来检查选中的项是否是所有年份或者不是,通过用通配符赋值给变量h
                {
                     h = "^20[0-9]{5}$";//不是所有年份
                }
                else
                {
                     h = "^2[0-9]{6}$";//是所有年份
                }
                cb2.Items.Remove(h);//清除指定的项,我不知道用通配符能否起到索引项的作用。
                cb3.Items.Remove(h); //清除指定的项,我不知道用通配符能否起到索引项的作用。        
                while (datareader.Read())//循环读取数据
                {
                    r = (string)datareader[0];//从数据库相关列中读取到的数据转换成string赋值给r
                    cb2.Items.Add(r);//向组合框的集合添加数据
                    cb3.Items.Add(r);//向组合框的集合添加数据
                }                datareader.Close();//关闭SqlDataReader对象            }
            catch (Exception ex)
            {
                throw;
            }
            finally
            {
                DBH.connection.Close();
            }        }