this works ok for me, keeping the subitems also....
VB Code:
  1. [Color=Blue]Private[/COLOR] [Color=Blue]Sub[/COLOR] Button1_Click([Color=Blue]ByVal[/COLOR] sender [Color=Blue]As[/COLOR] System.Object, [Color=Blue]ByVal[/COLOR] e [Color=Blue]As[/COLOR] System.EventArgs) [Color=Blue]Handles[/COLOR] Button1.Click
  2.  
  3. [Color=Blue]If[/COLOR] [Color=Blue]Not[/COLOR] ListView1.SelectedItems [Color=Blue]Is[/COLOR] [Color=Blue]Nothing[/COLOR] [Color=Blue]Then[/COLOR] [Color=Green]'///[/COLOR] [Color=Green]incase[/COLOR] [Color=Green]nothing[/COLOR] [Color=Green]is[/COLOR] [Color=Green]selected[/COLOR] [Color=Green].[/COLOR] [Color=Green]
  4. [/COLOR]    [Color=Blue]Dim[/COLOR] x [Color=Blue]As[/COLOR] [Color=Blue]Integer[/COLOR] = ListView1.SelectedItems(0).Index - 1
  5.     [Color=Blue]Dim[/COLOR] lvi [Color=Blue]As[/COLOR] ListViewItem = [Color=Blue]DirectCast[/COLOR](ListView1.SelectedItems(0), ListViewItem)
  6.     ListView1.Items.Remove(lvi)
  7.     ListView1.Items.Insert(x, lvi)
  8. [Color=Blue]End[/COLOR] [Color=Blue]If
  9. [/COLOR]
  10. [Color=Blue]End[/COLOR] [Color=Blue]Sub[/COLOR]