欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

DataGridView - DataGridViewCheckBoxCell的使用介绍

程序员文章站 2024-03-02 08:44:34
datagridview是.net中最复杂的控件,由于人们对表格的格式要求多种多样,所以编写一个通用的datagridview(类似jsf中的datatable)非常困难的...
datagridview是.net中最复杂的控件,由于人们对表格的格式要求多种多样,所以编写一个通用的datagridview(类似jsf中的datatable)非常困难的。

datagridview中,用户可以对行、列、单元格进行编程。如行中可以插入下拉列表、复选框、编辑框、单选框等多种控件。每种控件都以datagridview开头。如:单选框类为datagridviewcheckboxcell。

datagridviewcheckboxcell有一些恶心的属性折磨了我很久,下加以详细说明。

formattedvalue属性:

可能大家已经习惯了用checked=true或者checked=false这样直观的语句来取得checkbox的值,但datagridviewcheckboxcell没有checked属性,而使用了更复杂的formattedvalue。

editedformattedvalue属性:

当前checkbox的状态,不管它是不是已经是一个“确认值”。在我们在印象里,checkbox只有true或false。什么叫“确认值”呢?确认值是指:不管用户是不是已经离开该单元格(即确认该单元格最终的状态),都返回checkbox目前的值。乍一听,更糊涂了。举个例子加以解释:

(1) 初始时checkbox未选中,用户点了一下,于是checkbox会呈现勾选状态
这时,editedformattedvalue=true,但formattedvalue=false,这是因为,用户没有“确认”这个值,这个checkbox仍然处于编辑状态;

(2) 初始时checkbox选中,用户点了一下,于是checkbox会呈现未勾选状态,然后用户点击其它单元格

这时,editedformattedvalue=false,但formattedvalue=false,这是因为,用户离开这个单元格意味着用户已经“确认”这个值,这个checkbox不再处于编辑状态,它的editedformattedvalue==formattedvalue

这时,editedformattedvalue=false,但formattedvalue=false,这是因为,用户离开这个单元格意味着用户已经“确认”这个值,这个checkbox不再处于编辑状态,它的editedformattedvalue==formattedvalue
复制代码 代码如下:

for (int i = 0; i < datagridview1.rows.count; i++)
{
datagridviewcheckboxcell chkboxcell = (datagridviewcheckboxcell)datagridview1.rows[i].cells[column_id.index];

if (chkboxcell != null && ((bool)chkboxcell.editingcellformattedvalue == true || (bool)chkboxcell.formattedvalue == true))
{

}
}