现在的位置: 首页 > 综合 > 正文

Winform DataGridView VirtualMode虚拟模式不能复选,勾选失去焦点后失效的问题

2018年04月27日 ⁄ 综合 ⁄ 共 691字 ⁄ 字号 评论关闭

这里我们datagridview的datasourse已经绑定到了一个datatable,

datatable来自于mysql或者excel表  这两种来源都是不会自带是否选择此列的字段的,因为是否选择是运行时的状态而非数据本身应该记录的

那么如果在datagridview里面显示一个可以选择的列 我们就会用到这个复选框

因为性能的需要我们会用到虚拟模式,但是进入虚拟模式后的datagridview如果是在其开头的第一列插入一个复选框列,是无法保持选中的,更不能多选,一旦失去焦点以后就会丢掉了选择状态.但是在非虚拟模式的情况下就可以保持选中

原因在于虚拟模式下显示依靠数据来源,我们新增的一列并没有绑定数据.

但是如何绑定这样复选框的数据呢,我们读出来的datatable并没有是否选择的这一列 所以我们要添加一个列,用于记录复选状态的值

showTradesTable.Columns.Add("Checked",typeof(bool));
            showTradesTable.Columns["Checked"].SetOrdinal(0);

这样这个复选框列就放在了datagridview的第一位了(已绑定的情况下)

这里要注意的是 .Columns.Add("Checked",typeof(bool));  第二参数必须要填写,这样的话系统默认的会把datagridview的第一列设置成复选框列,如果不写的话默认就是一个文本框列,而且更改起来非常的麻烦.我之间就是因为忘记设置这个参数煎熬好久.

然后下面一行的setordinal方法很有用.他可以很方便的让你的复选框位居任何位置

抱歉!评论已关闭.