DataGridView - DataGridViewCheckBoxCell的使用介绍
程序员文章站
2024-02-29 15:52:40
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))
{
}
}
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))
{
}
}