效果图
下图是下拉一个ListView控件,事实上,好多人不喜欢使用ListView来做行显示的控件,因为我们有强大的DataGridView控件。是的,没有,我们可以使用listView来显示表格类的数据,我们也当然可以使用DataGridView了。
代码分析
细心的话,你可以留意到下拉控件,其实是一个ComboBox+MultiColumn样式,其实,也有人称呼这一控件是MultiColumnComboBox控件。你也完全可以从小作坊网找到相关的代码与说明的。
而此MultiColumnComboBox控件对应的Column,本文中称为DataGridViewListViewColumn,如果你还不了解DataGridView***Column的自定义方法的话,可以参考
http://www.myfirm.cn/20089/20080925102315582.html
Cell中的InitializeEditingControl方法是一个重要的方法,它的工作就正如名字一样,就是当前的格子开始编辑时的准备工作。如设置EditingControl的Text之类,这里的EditingControl就是单元格弹出的控件了。弹出的控件是DataGridViewListViewEditingControl,直接继承了ListView控件。这样ListView控件的大部分方法和事件都可以开发出来了。
EditingControlWantsInputKey是一个很好的方法,它可以设置当前编辑的控件可以使用的按键,如上下左右键是DataGridView中最好用的键,你可以在这个方法中设置这几个键交给EditingControl来处理,而不是父控件DataGridView来处理。
不过,Enter回车键是一个麻烦的键,你会发觉无论在Cell中怎样设置都好像不能关闭它本来有的功能。
是的,初步的试验告诉我,只有重定义ProcessCmdKey方法,是最好的解决方案,这是一个带Keys类型参考的方法,很好操作的。
DataGridViewListViewColumn源代码
联系客服