Winfrom ListBox绑定数据源list界面不更新问题与绑定数据源不可CRUD问题

场景:获取一个listbox的选中项添加到另一个listbox中

解决方案-1:不要直接绑定DataSource 先把ListBox绑定到BindingSource bs中在绑定bs即可

代码案例:

1-1:可更新全部添加

  1. private void btnAdd_Click(object sender, EventArgs e)
  2.  
  3. {
  4.  
  5. ListBox.SelectedObjectCollection selectObj = this.listLeft.SelectedItems;
  6.  
  7. foreach (DataRowView item in selectObj)
  8.  
  9. {
  10.  
  11. Sta sta = new Sta();
  12.  
  13. sta.STCD = int.Parse(item.Row.ItemArray[].ToString());
  14.  
  15. sta.Name = item.Row.ItemArray[].ToString();
  16.  
  17. list.Add(sta);
  18.  
  19. }
  20.  
  21. BindingSource bs = new BindingSource();
  22.  
  23. bs.DataSource = list;
  24.  
  25. this.listRight.DataSource = bs;
  26.  
  27. this.listRight.DisplayMember = "NAME";
  28.  
  29. this.listRight.ValueMember = "STCD";
  30.  
  31. }

1-2:更改后的 去掉重复项添加

  1. private void btnAdd_Click(object sender, EventArgs e)
  2.  
  3. {
  4.  
  5. ListBox.SelectedObjectCollection selectObj = this.listLeft.SelectedItems;
  6.  
  7. foreach (DataRowView item in selectObj)
  8.  
  9. {
  10.  
  11. bool b = true;
  12.  
  13. //要查看listright是否已经有了这一项,有就不添加
  14.  
  15. foreach (Model.Sta rightItem in this.listRight.Items)
  16.  
  17. {
  18.  
  19. if (rightItem.Name == item.Row.ItemArray[].ToString())
  20.  
  21. {
  22.  
  23. b = false;
  24.  
  25. }
  26.  
  27. }
  28.  
  29. if (b)
  30.  
  31. {
  32.  
  33. Sta sta = new Sta();
  34.  
  35. sta.STCD = int.Parse(item.Row.ItemArray[].ToString());
  36.  
  37. sta.Name = item.Row.ItemArray[].ToString();
  38.  
  39. list.Add(sta);
  40.  
  41. }
  42.  
  43. }
  44.  
  45. BindingSource bs = new BindingSource();
  46.  
  47. bs.DataSource = list;
  48.  
  49. this.listRight.DataSource = bs;
  50.  
  51. this.listRight.DisplayMember = "NAME";
  52.  
  53. this.listRight.ValueMember = "STCD";
  54.  
  55. }

1-3: 妈蛋 设置 DataSource 属性后无法修改项集合 只能绑定到list集合了,不知道有没有好办法解决

····换成list还是不行,根本原因就是不能用datasource去绑定

只能直接添加item

1-4 最终版本 0.0

  1. #region 添加右边listboxitems
  2.  
  3. ListBox.SelectedObjectCollection selectObj = this.listLeft.SelectedItems;
  4.  
  5. foreach (Model.Sta item in selectObj)
  6.  
  7. {
  8.  
  9. bool b = true;
  10.  
  11. //要查看listright是否已经有了这一项,有就不添加
  12.  
  13. foreach (Model.Sta rightItem in this.listRight.Items)
  14.  
  15. {
  16.  
  17. if (rightItem.Name == item.Name)
  18.  
  19. {
  20.  
  21. b = false;
  22.  
  23. }
  24.  
  25. }
  26.  
  27. if (b)
  28.  
  29. {
  30.  
  31. Sta sta = new Sta();
  32.  
  33. sta.STCD = item.STCD;
  34.  
  35. sta.Name = item.Name;
  36.  
  37. this.listRight.Items.Add(sta);
  38.  
  39. }
  40.  
  41. }
  42.  
  43. this.listRight.DisplayMember = "NAME";
  44.  
  45. this.listRight.ValueMember = "STCD";
  46.  
  47. #endregion
  48.  
  49. //删除左边已经添加的item
  50.  
  51. //1-2:把选中的item移除
  52.  
  53. int icount = listLeft.SelectedItems.Count;
  54.  
  55. for (int i = ; i < icount; i++)
  56.  
  57. {
  58.  
  59. this.listLeft.Items.Remove(listLeft.SelectedItems[icount - - i]);
  60.  
  61. }

关于ListBox的几个问题的更多相关文章

  1. MVVM下listbox默认显示最后一行

    原文地址:http://stackoverflow.com/questions/16866309/listbox-scroll-into-view-with-mvvm public class Scr ...

  2. WPF 自定义列表筛选 自定义TreeView模板 自定义ListBox模板

    有很多项目,都有数据筛选的操作.下面提供一个案例,给大家做参考. 左侧是数据源,搜索框加TreeView控件,右侧是ListBox控件.在左侧数据列点击添加数据,然后点击确定,得到所筛选的数据. 下面 ...

  3. WPF制作的VS黑色风格的Listbox

    最近写的一个玩具,WPF写出来的东西还是挺好看的 style.xaml <ResourceDictionary xmlns="http://schemas.microsoft.com/ ...

  4. jquery 双向select控件bootstrap Dual listbox

    http://www.cnblogs.com/hangwei/p/5040866.html       -->jquery 双向select控件bootstrap Dual listboxhtt ...

  5. C# 向listbox添加大量数据项的实践心得

    使用 ListBox.Items.Add 方法添加项时,可以使用 BeginUpdate 方法,以防止每次向列表添加项时控件都重新绘制 ListBox.完成向列表添加项的任务后,调用 EndUpdat ...

  6. 实现一个纵向排列的 ListBox ,并具有操作按钮

    需要实现的效果如下: 要想把 ListBox 的内容纵向显示很简单,只需把 ListBox 的内容控件为 WrapPanel 就可以了: <ListBox.ItemsPanel> < ...

  7. 背水一战 Windows 10 (33) - 控件(选择类): ListBox, RadioButton, CheckBox, ToggleSwitch

    [源码下载] 背水一战 Windows 10 (33) - 控件(选择类): ListBox, RadioButton, CheckBox, ToggleSwitch 作者:webabcd 介绍背水一 ...

  8. WPF 显示文件列表中使用 ListBox 变到ListView 最后使用DataGrid

    WPF 显示文件列表中使用 ListBox 变到ListView 最后使用DataGrid 故事背景: 需要检索某目录下文件,并列出来,提供选择和其他功能. 第一版需求: 列出文件供选择即可,代码如下 ...

  9. WPF 自定义ListBox

     如题,要实现一个如下的列表,该如何实现? 在设计过程中,会遇到如下问题: 1.ListBox中ListBoxItem的模板设计 2.ListBox中ListBoxItem的模板容器设计 3.List ...

  10. [WPF系列]-ListBox

    引言 本文就WPF中的ListBox常用项给以实例代码演示,包括隐蔽属性的设置,Style设置,以及ControlTemplate的自定义.   Listbox平滑滚动 <ListBox Ite ...

随机推荐

  1. byte,short,int,long数据之间的倍数关系

    基本数据类型 byte   =  -128和127------------------------------------------------------------2的8次方,1个字节 shor ...

  2. 使用CSS实现透明边框的效果——兼容当前各种主流浏览器[xyytIT]

    这个效果可是通过代码实现的哦,在不同浏览器下都可以正常显示 对于html中使用CSS实现透明边框的效果,主要有以下四种属性设置方法,但由于 这些属性兼容性并不是很好,单一使用会造成不同浏览器显示效果不 ...

  3. 无法打开登录所请求的数据库 "****"。登录失败

    错误:无法打开登录所请求的数据库 "****".登录失败.用户 '****' 登录失败. sql2005连接时出现的错误 解决方法:权限不够,给登录名授权,赋予管理员角色,在登录名 ...

  4. HTML实例

    HTML内容繁多,不易记忆,故将此网址 作为查阅复习的工具http://www.w3school.com.cn/example/html_examples.asp

  5. 使用bcp工具对boost库裁剪

    有些时候,我们需要通过源代码来发布我们的产品,在使用了CI工具之后,一般我们要求每天对源码进行构建,以防止代码不可用了还不自知.如果我们使用了Boost库,我们就需要在构建的过程中将Boost同时构建 ...

  6. B/S与C/S的比较

    1.C/S需要安装客户端软件,比如我们的qq就是C/S模式下的软件.如果使用这些软件我们必须先要下载客户端软件.如果软件更新了,就需要下载新的客户端进行更新. 2.B/S无需安装客户端软件,比如我们的 ...

  7. Spring的2.5版本中提供了一种:p名称空间的注入(了解)

    1. 步骤一:需要先引入 p 名称空间 * 在schema的名称空间中加入该行:xmlns:p="http://www.springframework.org/schema/p"( ...

  8. Jmeter通过BeanShell Sampler获取Jmeter的Bin路径,并存入变量供后面的脚本调用

    Jmeter的Bin路径是其运行路径,当把自动化测试的脚本放在Bin目录下时,为了将存储CSV的数据文件以及脚本的路径都设置成相对路径,我们需要获取到Jmeter的运行路径: 通过BeanShell ...

  9. 什么是tcp协议?

    这是世界上最顶尖的tcp讲解技术...

  10. pageX/pageY,screenX/screenY,clientX/clientY的差别

    pageX/pageY,screenX/screenY,clientX/clientY的差别 $(document).click(function(e){ //x方向无差别 //alert(e.pag ...