要现实的ListView控件中的Item 可用上下移动,用户选中某一项 点击上移或下移按钮,Item随之移动,不知道有没有系统函数实现, 这个现实顺序是通过 查询数据库中的数据来的 通过Order by 某个字段,来显示的。 在用户移动了Item后 这个字段的顺序也要跟着变化,真不知道有什么好的方法。先实现 Item的上下移动, 然后 UPdate数据库 将俩个Item对应的字段值交换? 目前是按这种方法在做。
调试欢乐多
{
System.Windows.Forms.ListViewItem listViewItem = this.myListView_look.SelectedItems[i];
int index = this.myListView_look.SelectedItems[i].Index - 1;
if (index < 0) return ;
this.myListView_look.Items.Remove(this.myListView_look.SelectedItems[i]);
this.myListView_look.Items.Insert(index, listViewItem);
listViewItem.Selected = true;
} //下移
for (int i = this.myListView_look.SelectedItems.Count-1; i > -1; i--)
{
System.Windows.Forms.ListViewItem listViewItem = this.myListView_look.SelectedItems[i];
int index = this.myListView_look.SelectedItems[i].Index + 1;
if (index > this.myListView_look.Items.Count -1) return;
this.myListView_look.Items.Remove(this.myListView_look.SelectedItems[i]);
this.myListView_look.Items.Insert(index, listViewItem);
listViewItem.Selected = true;
}
insert(0,item);
就可以了
private void MoveItemsDown(ListView listView)
{
if (listView.SelectedItems.Count == 0)
{
return;
} listView.BeginUpdate();
int indexMaxSelectedItem = listView.SelectedItems[listView.SelectedItems.Count - 1].Index; if (indexMaxSelectedItem < listView.Items.Count - 1)
{
for (int i = listView.SelectedItems.Count - 1; i >= 0; i--)
{
ListViewItem lviSelectedItem = listView.SelectedItems[i];
int indexSelectedItem = lviSelectedItem.Index;
listView.Items.RemoveAt(indexSelectedItem);
listView.Items.Insert(indexSelectedItem + 1, lviSelectedItem);
}
}
listView.EndUpdate(); if (listView.Items.Count > 0 && listView.SelectedItems.Count > 0)
{
listView.Focus();
listView.SelectedItems[listView.SelectedItems.Count - 1].Focused = true;
listView.SelectedItems[listView.SelectedItems.Count - 1].EnsureVisible();
}
}用的这个