listview中的单元格没有编辑功能,因此经常需要弹出下拉框。
下面一段程序演示的是在listview中的第二列弹出combobox。
1 新建一个项目,窗体默认名为Form1,拖一个listview,脱一个combobox,拖一个imagelist(是为了是listview看起来更加美观)
2 设置listview1的属性,View属性设为Detail,GridLine设为true,FullRowSelect设为true,SmallImageList设为刚拖进来的imagelist1
3 设置imagelist的属性,高度改为20
4 给listview1添加三个列:columnHeader1 columnHeader2 columnHeader3
5 给combobox2和listview1添加几个item
6 添加listview1的MouseUp事件的响应(不能用MouseDwon,具体原因可以自己试一下)
7 添加combobox的SelectedIndexChanged和Leave事件的响应
重点在于listview1的MouseUp事件
思路是当鼠标点下是,首先判断是否选中了listview中的某一个item,如果选中,获取选中行的bounds,然后再判断是否落在了想要弹出combobox的列内,如果正好落入,则修改bounds使其与该列的某一单元格大小相同,最后设置combobox框的bounds为刚才的bounds,并将combobox设置为可见,当combobox的Leave事件触发时,设为不可见
下面是整个类的代码
下面是效果图: