本控件纯粹为练习用,所以没有考虑使用DataGrid代替。该控件不足的地方:
1、当父窗体运行后,DataSet被填充时,ListViewEx不能自动判断该种情况,只能通过CurrencyManager的ItemChanged的事件来调用填充ListViewItem的函数,有时该事件会被调用两次,ListViewEx则要填充两次。
2、对于FindItem中,按照ListViewItem的Text查找 ListViewItem的方法,记得有一个API可以调用,但是没有实现,只能暂时使用循环来查找。
3、当对ListViewEx进行排序时,控件总是有闪烁,当项目多时,闪烁就更加严重。
4、在数据绑定的情况下,对ListViewEx进行排序时,不知为什么就是同下面的DataGrid1中的循序不同,我曾经在窗体上增加一个DataGrid2,只用它来显示ListViewEx中的m_objView中的内容,这里内容的显示顺序同DataGrid1中的内容一致。后来发现在函数FillListViewItems()中填充的顺序同DataGrid1中的一致,但是一旦函数运行后退出,则ListViewEx显示的顺序就和DataGrid1中的顺序不同。
5、对于列表头同数据库中的表字段映射,本来想继承System.Windows.Forms.ColumnHeader,并向子类中添加属性实现,但是当使用同样继承自ListView.ColumnHeaderCollection来添加ColumnHeader,运行时就不能显示。所以只好定义了一个映射类来实现该功能。
6、当ListViewEx设定DataSource和DataMember后,调用SetDataMember,自动生成ColumnHeader和同其对应的ColumnHeaderMapping类时,运行程序时不能显示,只好注释掉。
以上的不知,请各位高手指点一二,以便让我能作一个较好的控件来。