图片在下面给出。。这张数据表中的每个字段都在winform 中 用一个combobox检索(cbx1,cbx2,cbx3,cbx4,cbx5,)
能不能做到:
当cbx1=“001”时,其他4个cbx自动显示出相应值(但是cbx中的选项不能少),即cbx2=“青钱柳”,cbx3=“Cyclocarya paliurus ”,cbx4=“胡桃科”,cbx5=“青钱柳属”当cbx4改为“木犀科”,cbx1=“”;(但候选项有 004,005,010),其他也一样,都有候选项最后的要求就是 所有的候选项能 distinct ,不显示重复值。。

解决方案 »

  1.   

    上面是详细的要求说法,
    其实说简单点,就是能让5个ComboBox的内容相关联,同时又能不显示重复值~
    我实在是没招了。。
      

  2.   

    .....是不是我理解有问题?
    目测很简单啊。。
    数据读出来以后
    每个cbo的selectindex发生改变的时候设置相应的筛选条件,然后重新把数据填充所有cbo就ok了嘛?
      

  3.   


    我之前也这么觉得,但是,每个cbo的selectindex都设置以后,会产生连带效应。。第一个变了,改变了剩下四个,于是剩下四个又会触发selectindex的代码,感觉进了死循环。。
    还有一个问题就是重复的问题没法解决。。
      

  4.   

    首先,你要建几个连带关系基本资料表,分好层次,比如科是属的上级,那么先录科,录好科后,录属,录属时选好科,这两个都录完了,就可以录植物了。这样你控件选择的时候就可以去表中查询对应值了。
    其次,你可以不用SelectedIndexChanged或TextChanged事件,你可以用leave事件,你每个的combobox的变化,其他combobox跟着变化肯定是有规律的,比如你变化id,name,latin_name,这三个都是唯一的,你变化其中任何一个,比如id=001,查询表就可以对应取001的name,latin_name,科,属。对应修改combobox即可。如果你想改第四个字段,或第五个字段,比如第四个,“木犀科”,那先查询对应科的所有属,然后再查找所有属下的所有植物,配置好其余的combobox就可以了,其余类似
      

  5.   


    惊叹于你的思路!真的是好办法,用leave的确也很好,唯独就是一个激活leave的操作,感觉对于软件来说有点奇怪了。
    (最后我还是向“不能完成”妥协了。。建关系表对于植物系统来说,太难以更新维护了。。我最后除了树种名仍用combobox来修改以外,其他四项全用label来显示了。。减少个小操作以寻求更简单的代码了~)再次表示最真诚的感谢!~
      

  6.   

    可以这样吗?将5个ComboBox关联起来,然后在事件里判断相应的ComboBox是否拥有焦点,如果有,则改变其他ComboBox里的项