您的位置:首页 > 其它

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);
}

}
}

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: