winform 两个listBox左右互移,支持多选或单选移动,移动时源listBox除移已除动的Items
2013-04-02 11:13
567 查看
LstCtrlMove_Mgr 移动类
using System;
using System.Collections;
using System.Collections.Generic;
using System.Data;
using System.Windows.Forms;
namespace MobileAnalysis.function
{
/// <summary>
/// winform 两个listBox左右互移,支持多选或单选移动,移动时源listBox除移已除动的Items
/// 由于listBox绑定了数据源其实左右移动,就是将两个dataTable的数据进行更换
/// 支持一下小站啊 sql吧企业网站源码下载 www.sql8.net
/// </summary>
public static class LstCtrlMove_Mgr
{
//用于统一处理两个List类型控件之间互相转移Items yxy 2013-4-2 www.sql8.net
//从左到右,从右到左同一个方法,只是在调用时更换一下控件跟数据源的参数的位置即可
public static void itemsMove(ListBox listBox1, ListBox listBox2, DataTable dt1, DataTable dt2)
{
if (listBox1.SelectedItems.Count == 0)
{
return;
}
//临时表 yxy 2013-4-2 www.sql8.net
DataTable dttemp = new DataTable();
dttemp.Columns.Add("id");
dttemp.Columns.Add("name");
for (int i = 0; i < listBox1.SelectedItems.Count; i++)
{
DataRowView s = (DataRowView)listBox1.SelectedItems[i];
//添加选中选项 yxy 2013-4-2 www.sql8.net
DataRow dr = dt2.NewRow();
dr["id"] = s[0];
dr["name"] = s[1];
dt2.Rows.Add(dr);
//添加临时表 yxy 2013-4-2 www.sql8.net
DataRow drtemp = dttemp.NewRow();
drtemp["id"] = s[0];
drtemp["name"] = s[1];
dttemp.Rows.Add(drtemp);
}
//批量清除已选中的信息 yxy 2013-4-2 www.sql8.net
//清除已选中项
for (int i = 0; i < dttemp.Rows.Count; i++)
{
DataRow s = dttemp.Rows[i];
//清除数据时要注意索引值从大往小的移除
for (int j = dt1.Rows.Count - 1; j >= 0; j--)
{
DataRow drRemov = dt1.Rows[j];
if (s[0].Equals(drRemov[0]))
{
dt1.Rows.Remove(drRemov);
}
}
}
}
//创建表结构 yxy 2013-4-2 www.sql8.net
public static DataTable initDataTable(DataTable dt)
{
dt = new DataTable();
dt.Columns.Add("id");
dt.Columns.Add("name");
return dt;
}
//给控件绑定数据源 其实这一步最好是放在调用的页面作 yxy 2013-4-2 www.sql8.net
public static void dataBind(ListBox listBox1, ListBox listBox2, DataTable dt1, DataTable dt2)
{
listBox1.DataSource = dt1;
listBox1.DisplayMember = "name";
listBox1.ValueMember = "id";
listBox2.DataSource = dt2;
listBox2.DisplayMember = "name";
listBox2.ValueMember = "id";
}
}
}
----------------------------------------------------
调用类
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Collections;
namespace MobileAnalysis.caseInfo
{
public partial class AddCaseInfo : Form
{
//申明dataTable yxy 2013-4-2 www.sql8.net
DataTable dt1;
DataTable dt2;
private MainForm mainForm;
public AddCaseInfo(MainForm m)
{
mainForm = m;
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
StringBuilder msg = new StringBuilder("");
if (this.caseName.Text.Trim().Equals(""))
{
msg.Append("案件名称不能为空!\n");
}
if (!"".Equals(msg.ToString()))
{
MessageBox.Show(msg.ToString());
return;
}
}
private void AddCaseInfo_Load(object sender, EventArgs e)
{
initDataTable();
string sql = "select id,name from gather_person";
DataSet ds = Maticsoft.DBUtility.DbHelperSqliteDb.Query(sql);
dt1 = ds.Tables[0];
function.LstCtrlMove_Mgr.dataBind(listBox1, listBox2, dt1, dt2);
}
//从左到右 yxy 2013-4-2 www.sql8.net
private void button3_Click(object sender, EventArgs e)
{
function.LstCtrlMove_Mgr.itemsMove(listBox1, listBox2, dt1, dt2);
}
//从右到左 2013-4-2 www.sql8.net
private void button4_Click(object sender, EventArgs e)
{
function.LstCtrlMove_Mgr.itemsMove(listBox2, listBox1, dt2, dt1);
}
//构建表 2013-4-2 www.sql8.net
private void initDataTable()
{
dt1 = function.LstCtrlMove_Mgr.initDataTable(dt1);
dt2 = function.LstCtrlMove_Mgr.initDataTable(dt2);
}
}
}
using System;
using System.Collections;
using System.Collections.Generic;
using System.Data;
using System.Windows.Forms;
namespace MobileAnalysis.function
{
/// <summary>
/// winform 两个listBox左右互移,支持多选或单选移动,移动时源listBox除移已除动的Items
/// 由于listBox绑定了数据源其实左右移动,就是将两个dataTable的数据进行更换
/// 支持一下小站啊 sql吧企业网站源码下载 www.sql8.net
/// </summary>
public static class LstCtrlMove_Mgr
{
//用于统一处理两个List类型控件之间互相转移Items yxy 2013-4-2 www.sql8.net
//从左到右,从右到左同一个方法,只是在调用时更换一下控件跟数据源的参数的位置即可
public static void itemsMove(ListBox listBox1, ListBox listBox2, DataTable dt1, DataTable dt2)
{
if (listBox1.SelectedItems.Count == 0)
{
return;
}
//临时表 yxy 2013-4-2 www.sql8.net
DataTable dttemp = new DataTable();
dttemp.Columns.Add("id");
dttemp.Columns.Add("name");
for (int i = 0; i < listBox1.SelectedItems.Count; i++)
{
DataRowView s = (DataRowView)listBox1.SelectedItems[i];
//添加选中选项 yxy 2013-4-2 www.sql8.net
DataRow dr = dt2.NewRow();
dr["id"] = s[0];
dr["name"] = s[1];
dt2.Rows.Add(dr);
//添加临时表 yxy 2013-4-2 www.sql8.net
DataRow drtemp = dttemp.NewRow();
drtemp["id"] = s[0];
drtemp["name"] = s[1];
dttemp.Rows.Add(drtemp);
}
//批量清除已选中的信息 yxy 2013-4-2 www.sql8.net
//清除已选中项
for (int i = 0; i < dttemp.Rows.Count; i++)
{
DataRow s = dttemp.Rows[i];
//清除数据时要注意索引值从大往小的移除
for (int j = dt1.Rows.Count - 1; j >= 0; j--)
{
DataRow drRemov = dt1.Rows[j];
if (s[0].Equals(drRemov[0]))
{
dt1.Rows.Remove(drRemov);
}
}
}
}
//创建表结构 yxy 2013-4-2 www.sql8.net
public static DataTable initDataTable(DataTable dt)
{
dt = new DataTable();
dt.Columns.Add("id");
dt.Columns.Add("name");
return dt;
}
//给控件绑定数据源 其实这一步最好是放在调用的页面作 yxy 2013-4-2 www.sql8.net
public static void dataBind(ListBox listBox1, ListBox listBox2, DataTable dt1, DataTable dt2)
{
listBox1.DataSource = dt1;
listBox1.DisplayMember = "name";
listBox1.ValueMember = "id";
listBox2.DataSource = dt2;
listBox2.DisplayMember = "name";
listBox2.ValueMember = "id";
}
}
}
----------------------------------------------------
调用类
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Collections;
namespace MobileAnalysis.caseInfo
{
public partial class AddCaseInfo : Form
{
//申明dataTable yxy 2013-4-2 www.sql8.net
DataTable dt1;
DataTable dt2;
private MainForm mainForm;
public AddCaseInfo(MainForm m)
{
mainForm = m;
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
StringBuilder msg = new StringBuilder("");
if (this.caseName.Text.Trim().Equals(""))
{
msg.Append("案件名称不能为空!\n");
}
if (!"".Equals(msg.ToString()))
{
MessageBox.Show(msg.ToString());
return;
}
}
private void AddCaseInfo_Load(object sender, EventArgs e)
{
initDataTable();
string sql = "select id,name from gather_person";
DataSet ds = Maticsoft.DBUtility.DbHelperSqliteDb.Query(sql);
dt1 = ds.Tables[0];
function.LstCtrlMove_Mgr.dataBind(listBox1, listBox2, dt1, dt2);
}
//从左到右 yxy 2013-4-2 www.sql8.net
private void button3_Click(object sender, EventArgs e)
{
function.LstCtrlMove_Mgr.itemsMove(listBox1, listBox2, dt1, dt2);
}
//从右到左 2013-4-2 www.sql8.net
private void button4_Click(object sender, EventArgs e)
{
function.LstCtrlMove_Mgr.itemsMove(listBox2, listBox1, dt2, dt1);
}
//构建表 2013-4-2 www.sql8.net
private void initDataTable()
{
dt1 = function.LstCtrlMove_Mgr.initDataTable(dt1);
dt2 = function.LstCtrlMove_Mgr.initDataTable(dt2);
}
}
}
相关文章推荐
- winform 两个listBox左右互移,支持多选或单选移动,移动时源listBox除移已除动的Items
- [唐胡璐]VS技巧 - 两个ListBox中的项左右移动
- 使用javascript实现ListBox左右全选,单选,多选,全请
- asp.net中两个ListBox 左右互相移动,以及上移、下移
- .NET上下左右移动操作支持多选
- 两个Listbox内容左右互相移动
- asp.net中两个ListBox 左右互相移动,以及上移、下移 .
- asp.net中两个ListBox 左右互相移动,以及上移、下移
- 在C#中实现两个listbox的项移动(winform)
- 使用javascript实现ListBox左右全选,单选,多选,全请
- javascript实现ListBox左右全选、单选、多选、全请
- datagrid的几点简单应用,功能包括radio的单选,checkbox的多选,鼠标移动到行上颜色变深,链接传递多参数等功能。这里radio和checkbox都使用的是HTML控件。
- 转载---使用Ajax实现DropDownList和ListBox的联动以及两个ListBox之间数据的移动
- jquery的Flexigrid改造,支持选中行内容获取,两个表格行相互移动,行选中事件,支持dwr
- 好用的图片选择器,支持单选多选,相册里面又拍照
- Android ListView构建支持单选和多选的投票项目
- 两个select多选控件中项的移动的相关操作
- C# winform listBox中的项上下移动(转)
- 使用javascript实现单选及多选的向右和向左移动
- PhotoPicker图片选择器,支持单选,多选