首页 > 代码库 > C# WPF控制listbox的item顺序

C# WPF控制listbox的item顺序

  一样有一个listBox还有代表往上移和往下移的Button,
  思路就是:
  插入一个复制品到指定位置,再把原来的删掉。
  要记得,插入后的位置会把后面的往后移(因为是插入,所以插入在2,原本在2的东西就会变成3……)
  往上移的按钮这样操作:
  view sourceprint?
  01.
  if (listBox.SelectedItem != null && listBox.SelectedIndex != 0)
  02.
  {
  03.
  //=============================顺序往上(第一笔不动)===========================//
  04.
  // add a duplicate item up in the listbox
  05.
  // Duplicate selected
  06.
  int ch = listBox.SelectedIndex;
  07.
  listBox.Items.Insert(ch - 1, listBox.Items[ch]);
  08.
  // delete the old item
  09.
  listBox.Items.RemoveAt(ch + 1);
  10.
  }
  如果以上你可以接受,
  那么往下移就是:
  view sourceprint?
  1.
  if (listBox.SelectedItem != null && listBox.SelectedIndex != listBox.Items.Count - 1)
  2.
  {
  3.
  //===========================顺序往下(最后一笔不动)===========================//
  4.
  int ch = listBox.SelectedIndex;
  5.
  listBox.Items.Insert(ch + 2, listBox.Items[ch]);
  6.
  listBox.Items.RemoveAt(ch);
  7.
  }
  为什么这边是单位2呢?就像刚刚提到的,插入是会把其它人往下移,如果只插入在下一个,那么原本的会放在后面。所以反过来想让他移动2个单位。
  真是可喜可贺呀~
  能够在一天之内解决这问题~(洒花)
  其实我看英讨还有另一种方法,是用Binding的方式。
  就是在XAML动手脚啦托福答案
  虽然在XAML动手脚的话,程序代码会比较少,
  但SV实在看不懂也太会,所以就用现在这个方法了。
  顺带一题,SV的listBox是动态加入数据的,也就是初始为空的listBox.如果是用了Binding之类的,不保证这个方法也有用啰~

C# WPF控制listbox的item顺序