日期:2014-05-17  浏览次数:20876 次

来来来,给你们出个难题,很有意思!关于ObjectListView控件的,如果没听过,可以当成是listView控件就OK了,原理应该一样!
最近学习使用了一种新的控件,ObjectListView控件,官网:http://objectlistview.sourceforge.net/
来自csdn上的一个教程:http://blog.csdn.net/a2657222/article/details/8393898
如果没有听过这个控件也不要紧,可以把它理解成ListView控件!
因为这个控件添加数据的时候,是以对象为单位的,OK,我的程序很短,但是为了让大家看的更顺一些,我就直接语言描述了:

1.新建一个类,定义若干成员字段,String和Int两种,下面图片中的:“序号”,“1搜”,“1成”,“2搜”,“2成”,“3搜”,“3成”,“4搜”是Int型字段,“关键词”“次优”是String型字段!
2.实例化这个类,建一个对象,然后使用ObjectListView的AddObject方法添加对象数据到列表中!
如下代码:


objectListView.AddObject(myObject);

如下图中表格:


我这个小程序主要实现的功能就是导入一些关键词,然后查询这个关键词的相关信息!把ObjectListVIew控件当做一个表格使用!

下面是重点,现在我遇到如下几个小问题:
1.导入关键词的时候我并没有给对象的其他字段赋值,只给关键词,1搜两个字段赋值,但是其他的Int型字段全部变成了0。我也没有给除关键词,1搜两个字段以外的其他字段赋值呀,怎么就会自动变成0呢?这是我不理解的地方!
OK,有的人也说了,你把Int型字段全部改成String型不就OK了吗?是的,改成String之后的确是没有0,但是因为表格中的一些数据涉及到点击列头按照从大到小或者是从小到大排序的问题,必须要是Int型字段才OK,String型字段排序不行,你懂的!所以,如何让他在导入关键词的时候不给Int型字段赋值呢?或者说到入关键词的时候不实例化对象的某些字段,不知道我这样说对不对~~

2.当我查询数据的时候,不知道为什么,查询的数据显示在最后一行的对应位置,也就是说错位了!举例:我查询“汽车1”这个关键词数据的时候,显示的查询信息在“小南”这个关键词下面一行的对应位置!
OK,有的人也说了,你直接像ListVIew那样使用objectListView.Items[i].SubItems[j].Text = 数据这样赋值不久OK了?嗯,确实是可以解决问题,但是这样的话,数据多的时候,数据的显示有先后顺序,很不友好的界面!我想像ObejctListView本身那样每次直接添加对象成员的数据到表格中!

1问题和2问题有一个共同点,不知道我的想法对不对,就是实例化一个类的时候,不实例化他的某些成员,等到有必要的时候再实例化,我是新手,不知道我这样说对不对!也算是我的一个猜想吧!
第2个问题中,如果真的可以不实例化某些成员,那么怎么让数据的显示再回到第一行或者是某一行呢?

3.这个问题也是我为什么放弃使用datagridview控件和Listview控件的原因,就是数据比较多的时候,左右拖动界面会很卡,“一闪一闪亮晶晶”,内存占用居高不下,有的时候直接爆内存溢出错误!怎样才能让表哥里面的数据在拖动的时候不卡呢?

上面这三个问题困扰了我快一个月了,都没有找到好的解决方法,唉~求CSDN上的大大指点指点~~

------解决方案--------------------

你不会把属性设成 int? 呀。R