首页 > 代码库 > 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顺序