【代码保留】WinForm ListBox上下移动选中项(扩展)
2012-01-14 14:56
351 查看
【代码保留】WinForm ListBox上下移动选中项(扩展)
public static class ListBoxExtension { public static bool MoveSelectedItems(this ListBox listBox, bool isUp, Action noSelectAction) { if (listBox.SelectedItems.Count > 0) { return listBox.MoveSelectedItems(isUp); } else { noSelectAction(); return false; } } public static bool MoveSelectedItems(this ListBox listBox, bool isUp) { bool result = true; ListBox.SelectedIndexCollection indices = listBox.SelectedIndices; if (isUp) { if (listBox.SelectedItems.Count > 0 && indices[0] != 0) { foreach (int i in indices) { result &= MoveSelectedItem(listBox, i, true); } } } else { if (listBox.SelectedItems.Count > 0 && indices[indices.Count - 1] != listBox.Items.Count - 1) { for (int i = indices.Count - 1; i >= 0; i--) { result &= MoveSelectedItem(listBox, indices[i], false); } } } return result; } public static bool MoveSelectedItem(this ListBox listBox, bool isUp, Action noSelectAction) { if (listBox.SelectedItems.Count > 0) { return MoveSelectedItem(listBox, listBox.SelectedIndex, isUp); } else { noSelectAction(); return false; } } public static bool MoveSelectedItem(this ListBox listBox, bool isUp) { return MoveSelectedItem(listBox, listBox.SelectedIndex, isUp); } private static bool MoveSelectedItem(this ListBox listBox, int selectedIndex, bool isUp) { if (selectedIndex != (isUp ? 0 : listBox.Items.Count - 1)) { object current = listBox.Items[selectedIndex]; int insertAt = selectedIndex + (isUp ? -1 : 1); listBox.Items.RemoveAt(selectedIndex); listBox.Items.Insert(insertAt, current); listBox.SelectedIndex = insertAt; return true; } return false; } } private void btnUp_Click(object sender, EventArgs e) { this.listBox1.MoveSelectedItems(true, () => { MessageBox.Show("请选择"); }); } private void btnDown_Click(object sender, EventArgs e) { this.listBox1.MoveSelectedItems(false, () => { MessageBox.Show("请选择"); }); } |
相关文章推荐
- 【代码保留】WinForm ListBox上下移动选中项(扩展)
- 【代码保留】WinForm ListBox上下移动选中项(扩展)
- QTableView中使用代码来选中连续多行、间隔多行并移动后保留选中
- 在gridview上实现上下键移动选中行! .
- Jquery实现上下移动和排序代码
- JS动态的把左边列表添加到右边的实现代码(可上下移动)
- 我得到了一些代码, 里边有太多的#ifdef。我不想使用预处理器 把所有的#include 和#ifdef 都扩展开, 有什么办法只保留一种 条件的代码呢?
- 有关select左右移动、上下移动、双击移动效果代码
- jquery实现tr元素的上下移动示例代码
- JavaScript代码实现左右上下自动晃动自动移动
- Jquery实现上下移动和排序代码
- C#ListView选中selectedItem上下移动
- jquery实现tr元素的上下移动示例代码
- jQuery实现table中的tr上下移动并保持序号不变的实例代码
- Eclipse4.7基础 快捷键 alt + 上下箭头 实现选中语句的上下移动
- ListView选中selectedItem上下移动 C#
- unity 挖掘机前后上下移动代码
- 文字来回上下移动或跳动的代码
- 成长手删代码40-listbox js操作上下左右移动.txt
- ListView选中selectedItem上下移动 C#