C# winform Listbox添加和删除items
两个listbox添加和删除items
#region 添加/移除
//添加
private void btnAdd_Click(object sender, EventArgs e)
{
if (listboxA.Items.Count <= )
{
return;
}
this.AddItems(listboxB, listboxA.SelectedItems);
this.RemoveItems(listboxA, listboxA.SelectedItems);
//UpdateListViewHandler();//调用委托,更新原列表 刷新MainForm窗体
}
//移除
private void btnRemove_Click(object sender, EventArgs e)
{
if (listboxB.Items.Count <= )
{
return;
}
this.AddItems(listboxA, listboxB.SelectedItems);
this.RemoveItems(listboxB, listboxB.SelectedItems);
//UpdateListViewHandler();//调用委托,更新原列表 刷新MainForm窗体
}
/// <summary>
/// 向一个ListBox中添加Items
/// </summary>
/// <param name="lstBox"></param>
/// <param name="items"></param>
private void AddItems(UI.ListBoxEx lstBox, IEnumerable items)
{
DataTable dt = null;
foreach (object item in items)
{
if (item is DataRowView)
dt = ((DataRowView)item).Row.Table.Clone();
if (item is DataRow)
dt = ((DataRow)item).Table.Clone();
break;
}
if (lstBox.DataSource != null)
dt = ((DataTable)lstBox.DataSource).Copy();
foreach (object item in items)
{
if (item is DataRowView)
dt.Rows.Add(((DataRowView)item).Row.ItemArray);
if (item is DataRow)
dt.Rows.Add(((DataRow)item).ItemArray);
}
lstBox.DataSource = dt;
if (this.Text.Contains("Add or Remove Exc"))
{
lstBox.DisplayMember = "ExcName";
lstBox.ValueMember = "ExcID";
}
else if (this.Text.Contains("Add or Remove Cs"))
{
lstBox.DisplayMember = "CsName";
lstBox.ValueMember = "CsID";
}
}
/// <summary>
/// 从一个ListBox中删除Items
/// </summary>
/// <param name="lstBox"></param>
/// <param name="items"></param>
private void RemoveItems(UI.ListBoxEx lstBox, IEnumerable items)
{
DataTable dt = ((DataTable)lstBox.DataSource);
DataTable newDt = dt.Clone();
bool flag = false;
//因为直接删除DataRow会保存,所以用这样丑陋的方式处理了
foreach (DataRow dr in dt.Rows)
{
foreach (DataRowView item in items)
{
if (dr == item.Row)
{
flag = true;
break;
}
else
flag = false;
}
if (!flag)
newDt.Rows.Add(dr.ItemArray);
else
continue;
}
lstBox.DataSource = newDt;
if (this.Text.Contains("Add or Remove Exc"))
{
lstBox.DisplayMember = "ExcName";
lstBox.ValueMember = "ExcID";
}
else if (this.Text.Contains("Add or Remove Cs"))
{
lstBox.DisplayMember = "CsName";
lstBox.ValueMember = "CsID";
}
}
#endregion
C# winform Listbox添加和删除items的更多相关文章
- Winform中对自定义xml配置文件进行Xml节点的添加与删除
场景 Winform中自定义xml配置文件后对节点进行读取与写入: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/10053213 ...
- jquery 动态添加和删除 ul li列表
今天需要实现一个jquery动态添加和删除 ul li列表中的li行,自己简单的实现乐一个,分享一下 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML ...
- C# winform listBox中的项上下移动(转)
C# winform listBox中的项上下移动 分类: C# winform2009-06-24 12:37 876人阅读 评论(0) 收藏 举报 winformc#object //上移节点 ...
- matplotlib工具栏源码探析三(添加、删除自定义工具项)
转: matplotlib工具栏源码探析三(添加.删除自定义工具项) matplotlib工具栏源码探析二(添加.删除内置工具项)探讨了工具栏内置工具项的管理,除了内置工具项,很多场景中需要自定义工具 ...
- MVC5 网站开发之六 管理员 2、添加、删除、重置密码、修改密码、列表浏览
目录 奔跑吧,代码小哥! MVC5网站开发之一 总体概述 MVC5 网站开发之二 创建项目 MVC5 网站开发之三 数据存储层功能实现 MVC5 网站开发之四 业务逻辑层的架构和基本功能 MVC5 网 ...
- [vs2008]Visual Studio 2008 SP1添加或删除功能提示查找SQLSysClrTypes.msi文件
前言 今天接到领导布置的一个任务,是之前同事负责的项目.离职了,现在客户有些地方需要修改,由于我之前参与过,就落在我的头上了. 然后我就把代码弄了过来,打开发现其中需要用到水晶报表.(我觉得不好用,不 ...
- JavaWeb_day03_员工信息添加修改删除
day03员工的添加,修改,删除 修改功能 思路 : 点击修改员工数据之后,跳转到单行文本,查询要修改的员工id的全部信息,主键id设置为readonly,其余的都可以修改, 修改之后,提交按钮,提交 ...
- 原生js事件的添加和删除
在IE浏览器中添加或删除事件用attachEvent.detachEvent.在其他标准浏览器中则用addEventListener.removeEventListener.下面的对事件的添加和删除做 ...
- Google Map API Version3 :代码添加和删除marker标记
转自:http://blog.sina.com.cn/s/blog_4cdc44df0100u80h.html Google Map API Version3 教程:在地图 通过代添加和删除mark标 ...
随机推荐
- jquery插件:仿百度首页可展开收起的消息提示控件
消息提示插件大伙并不陌生了,无论是个系统还是网站,基本都要有消息系统.但我认为,一个好的提示插件应当具备很好的独立性,不与页面其他元素发生任何关系,其次是能对外提供丰富的接口,因为你生来就是被别人来调 ...
- 自制Unity小游戏TankHero-2D(5)声音+爆炸+场景切换+武器弹药
自制Unity小游戏TankHero-2D(5)声音+爆炸+场景切换+武器弹药 我在做这样一个坦克游戏,是仿照(http://game.kid.qq.com/a/20140221/028931.htm ...
- PHPer书单
想提升自己,还得多看书!多看书!多看书! 下面是我收集到的一些PHP程序员应该看得书单及在线教程,自己也没有全部看完.共勉吧! Github地址:https://github.com/52fhy/ph ...
- PHP 函数基础
1.简单函数 函数四要素:返回类型,函数名,参数列表,函数体 function Show(){ echo "hello";}Show(); 输出了 ...
- Android笔记——探究活动
1.活动是什么 活动(Activity)是最容易吸引到用户的地方了,它是一种可以包含用户界面的组件,主要用于和用户进行交互.一个应用程序中可以包含零个或多个活动,但不包含任何活动的应用程序 ...
- asp.net 有关时间各种(输出)处理
有关一下时间处理方法 /// <summary> /// 将时间转换成几小时.几天之类的格式 /// </summary> /// <param name="m ...
- 获取当前请求的URL的地址、参数、参数值、各种属性
//URL: http://localhost:1897/User/Press/UserContent.aspx/9878?id=1#toc Request.ApplicationPath; //结果 ...
- Android 神兵利器—— Adb 常用命令
总结的Android工具类文章: Android 神兵利器-- Adb 常用命令 Android 神兵利器-- Git 常用命令 Adb的全称为Android Debug Bridge,是管理andr ...
- How Google TestsSoftware - Part Two
In order for the "you buildit, you break it" motto to be real, there are roles beyond the ...
- Web端即时通讯技术盘点:短轮询、Comet、Websocket、SSE
1. 前言 Web端即时通讯技术因受限于浏览器的设计限制,一直以来实现起来并不容易,主流的Web端即时通讯方案大致有4种:传统Ajax短轮询.Comet技术.WebSocket技术.SSE(Serve ...