C# listbox DataSource数据绑定--一年半以前的bug
listbox使用DataSource进行数据绑定和删除,大家肯定都会,
写这个随笔只是因为。。。。这是一年半以前刚进公司的我遗留的bug,现在看看当时竟然没有解决 - -
现在写个测试程序,写个随笔记录一下,当时萌新的我。。。
首先声明了一个类,要绑定的类型。
//声明一个全局集合
public List<BindingType> bi;
//声明一个绑定类型的类
public class BindingType
{
public string Name { get; set; }//名称
public DateTime Time { get; set; }//时间
}
然后两个方法,一个添加,一个删除。问题就出现在删除当中。
private void button1_Click(object sender, EventArgs e)
{
//初始化添加数据
bi = new List<BindingType>()
{
new BindingType { Name=Guid.NewGuid().ToString("N"),Time=DateTime.Now},
new BindingType { Name=Guid.NewGuid().ToString("N"),Time=DateTime.Now},
new BindingType { Name=Guid.NewGuid().ToString("N"),Time=DateTime.Now},
new BindingType { Name=Guid.NewGuid().ToString("N"),Time=DateTime.Now},
};
//绑定到listbox
HashSet<BindingType> hs = new HashSet<BindingType>(bi);
BindingSource bs = new BindingSource();
bs.DataSource = hs;
listBox1.DataSource = bs;
listBox1.DisplayMember = "Name";
}
private void button2_Click(object sender, EventArgs e)
{
//删除集合选中数据
foreach (BindingType item in listBox1.SelectedItems)
{
bi.Remove(item);
}
//重新绑定新的集合 如果此处bi这个集合数据为空就会出现显示错误
HashSet<BindingType> hs = new HashSet<BindingType>(bi);
BindingSource bs = new BindingSource();
bs.DataSource = hs;
listBox1.DataSource = bs;
listBox1.DisplayMember = "Name";
}
左边是添加效果图,右边是全部删除之后会提示绑定的错误。

没有使用 Items 进行数据绑定是因为需要取绑定中的数据。
当时记得弄了大半天都没有解决,最近刚好有个新的接口接入需要类似的功能,导致这个问题再次出现。。。
想了一下使用 Remove,Clear是没办法删除的因为属于绑定数据,然后试试给他赋值一个新的 BindingSource。
//删除集合选中数据
foreach (BindingType item in listBox1.SelectedItems)
{
bi.Remove(item);
}
)//结合没有数据
{
//重新new
BindingSource bs = new BindingSource();
listBox1.DataSource = bs;
}
else
{
//重新绑定新的集合 如果此处bi这个集合数据为空就会出现显示错误
HashSet<BindingType> hs = new HashSet<BindingType>(bi);
BindingSource bs = new BindingSource();
bs.DataSource = hs;
listBox1.DataSource = bs;
listBox1.DisplayMember = "Name";
}
到此。。。算是解决了不会显示错误,然后说看看这个DataSource是个什么东西,结果发现 “默认为null” 这几个字。。。。瞬间自己都笑了,
直接 listBox1.DataSource = null;
当时的我还真的萌新。。这么简单的问题我竟然没有解决。。。活到老,学到老。

C# listbox DataSource数据绑定--一年半以前的bug的更多相关文章
- Silverlight中ListBox的数据绑定
在Silverlight中ListBox是一个非常强大的控件.总结下ListBox的绑定数据的方式. 首先,新建一个Book类, public class Book { public string B ...
- VUE的一个数据绑定与页面刷新相关的bug
1.场景: N层嵌套的循环查询业务场景,框架是vue.其中在最后一层查完之后,还需要查其中每一项的两个属性,类型都是列表.查完之后将其赋值给一个变量用于页面展示.代码如下: (1)异常代码: getS ...
- ListBox和ComboBox绑定数据简单例子
1. 将集合数据绑定到ListBox和ComboBox控件,界面上显示某个属性的内容 //自定义了Person类(有Name,Age,Heigth等属性) List<Person> per ...
- 027. asp.net中数据绑定控件之 GridView控件
GridView控件支持下面的功能: 绑定至数据源控件, 如SqlDataSource 内置排序功能 内置更新和删除功能 内置分页功能 内置行选择功能 可以编程方式访问GridView对象模型以动态设 ...
- 4_1 wp8数据绑定与独立存储空间[wp8特色开发与编程技巧]
Wp8数据绑定与独立存储空间 数据绑定为基于 Silverlight 的应用程序提供了一种显示数据并与数据进行交互的简便方法. 数据的显示方式独立于数据的管理. UI 和数据对象之间的连接或绑定使数据 ...
- Windows App开发之集合控件与数据绑定
为ListView和GridView加入数据 ListView採用垂直堆叠得方式显示数据.而GridView则採用水平堆叠得方式. 长相的话嘛,它们都几乎相同. <Grid Name=" ...
- Windows phone应用开发[21]-图片性能优化
在windows phone 中常在列表中会常包含比较丰富文字和图片混排数据信息. 针对列表数据中除了谈到listbox等控件自身数据虚拟化问题外.虽然wp硬件设备随着SDK 8.0 发布得到应用可使 ...
- C#.NET 通用控件数据源绑定类
using System.Data; using System.Collections; using System.Collections.Generic; using System.Web.UI; ...
- ASP.NET 页生命周期
ASP.NET 页运行时,此页将经历一个生命周期,在生命周期中将执行一系列处理步骤.这些步骤包括初始化.实例化控件.还原和维护状态.运行事件处理程序代码以及进行 呈现.了解页生命周期非常重要,因为这样 ...
随机推荐
- Redis在window上安装
转:https://www.cnblogs.com/M-LittleBird/p/5902850.html 在windows上启动RabbitMQ: 这是Redis的启动,需要制定配置文件,否则连接不 ...
- UDP ------ UDP 和 TCP 的对比
UDP是无连接协议,客户端和服务器通信之前不需要建立握手连接: UDP没有应答机制,所以也没有重发机制,很大的可能会造成丢包.收到重复包.乱序的情况: UDP可以实现局域网广播功能,即某个主机可以向所 ...
- 移动端Web页面问题解决方案
1.安卓浏览器看背景图片,有些设备会模糊. 用同等比例的图片在PC机上很清楚,但是手机上很模糊,原因是什么呢? 经过研究,是devicePixelRatio作怪,因为手机分辨率太小,如果按照分辨率来显 ...
- OpenStack 网络服务 Neutron 多网卡(提供者网络)(十八)
OpenStack 网络服务 Neutron 多网卡,分为内部网络.外部网络 使用vmware模拟两张网卡 添加网卡 网卡配置 cd /etc/sysconfig/network-scripts cp ...
- 压力测试以及编译安装httpd2.4
压力测试以及编译安装httpd2.4 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.使用 deflate_module模块压缩页面优化传输速度 我们的httpd软件自带的有一个 ...
- vue-router基本概念及使用
index.html: <!DOCTYPE html> <html> <head> <title></title> <meta cha ...
- html5 canvas 对角线渐变
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- 【BZOJ】2111: [ZJOI2010]Perm 排列计数 计数DP+排列组合+lucas
[题目]BZOJ 2111 [题意]求有多少1~n的排列,满足\(A_i>A_{\frac{i}{2}}\),输出对p取模的结果.\(n \leq 10^6,p \leq 10^9\),p是素数 ...
- 仿QQ聊天图文混排流程图【适用于XMPP】
图文混排流程图.graffle4.8 KB 下面附上图片素材: 表情.zip692.5 KB 下面是字符串与图片的详细对应关系: "[呲牙]& ...
- MySQL主从复制部署
前言 MySQL的主从复制是基于二进制日志机制的,需开启二进制日志功能.在具体的配置过程中,需注意主服务器与从服务器均配置唯一ID编号,且从服务器必须设置主服务器的主机名.日志文件名.文件位置等参数. ...