ListItem的Left和Top属性得到的都是相对于容器窗体的,你可以通过减去ListView本身的Left和Top,再使用一定的偏移调节,得到的即是它的相对位置;
在每一次拖动(甚至每一次ItemClick)时将所有Item的状态保存在一个内存结构(集合或类均可)中。
退出时统一将状态保存在注册表、Ini或数据表中,下一次Form_Load时,可以全部恢复。
以上经过测试可行,无需什么特别高深的API,别把问题复杂化了:)