两个ListBox中的项互相移动及上下移动
来源:互联网 发布:solus linux安装 编辑:程序博客网 时间:2024/05/29 03:01
导读]左右移动就是简单的选择项增加删除,上下移动使用了高级语法,值得一学
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using WinForm = System.Windows.Forms;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using WinForm = System.Windows.Forms;
public static class ListBoxExtension
{
public static bool MoveSelectedItems(this WinForm.ListBox listBox, bool isUp, Action noSelectAction)
{
if (listBox.SelectedItems.Count > 0)
{
return listBox.MoveSelectedItems(isUp);
}
else
{
noSelectAction();
return false;
}
}
public static bool MoveSelectedItems(this WinForm.ListBox listBox, bool isUp)
{
bool result = true;
WinForm.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 WinForm.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 WinForm.ListBox listBox, bool isUp)
{
return MoveSelectedItem(listBox, listBox.SelectedIndex, isUp);
}
private static bool MoveSelectedItem(this WinForm.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;
}
}
这个类大概看了看,写得很棒
public partial class FrmReportSet : Form
{
public FrmReportSet()
{
InitializeComponent();
}
private void btnAdd_Click(object sender, EventArgs e)
{
List<Object> listObj = new List<object>();
foreach (Object obj in lboxCanUse.SelectedItems)
{
lboxSelected.Items.Add(obj);
listObj.Add(obj);
}
foreach (Object obj in listObj)
{
lboxCanUse.Items.Remove(obj);
}
}
private void btnRemove_Click(object sender, EventArgs e)
{
List<Object> listObj = new List<object>();
foreach (Object obj in lboxSelected.SelectedItems)
{
lboxCanUse.Items.Add(obj);
listObj.Add(obj);
}
foreach (Object obj in listObj)
{
lboxSelected.Items.Remove(obj);
}
}
private void btnUp_Click(object sender, EventArgs e)
{
this.lboxSelected.MoveSelectedItems(true, () =>
{
MessageBox.Show("请选择");
});
}
private void btnDown_Click(object sender, EventArgs e)
{
this.lboxSelected.MoveSelectedItems(false, () =>
{
MessageBox.Show("请选择");
});
}
}
- 两个ListBox中的项互相移动及上下移动
- C# winform listBox中的项上下移动
- ListBox中的SelectedItem上下移动
- ListBox实现上下移动
- ListBox的互相移动
- listbox实现添加删除转移及上下移动
- .net C# listbox的上下移动,拖动排序,两个listbox相互拖动
- 将ListBox选中的项进行上下移动
- 两个 ListBox 之间移动数据
- asp.net中两个ListBox 左右互相移动,以及上移、下移
- asp.net中两个ListBox 左右互相移动,以及上移、下移 .
- JQuery 两个ul标签中的li互相移动
- JQuery 两个ul标签中的li互相移动(动画队列)
- 在C#中实现listbox的项上下移动(winform)
- vs2005制做左右上下移动的Listbox ( asp.net , C#)
- vs2005制做左右上下移动的Listbox ( asp.net , C#)
- Javascript控制Listbox左右/上下移动方法集合
- listbox多选实现上下移动 js版和服务器版
- 时间日期格式转换
- 从Windows消息的角度看窗口应用程序运行过程
- Android 开发者(Android Developer)
- JAVA垃圾回收 之 引用计数 之 循环引用
- Gemini源码分析
- 两个ListBox中的项互相移动及上下移动
- UVA 11178 Morley's Theorem
- android apk安装原理分析
- 利用SecureCRT在linux与Windows之间互传文件
- shell中case
- 基于Trie树实现拼音搜索自动补全
- PL/SQL DEVELOPER 使用小技巧
- 《Emacs 编辑环境》学习笔记
- STK:使用Comm模块对转发器建模