DataGridview复选框列中的最后一次检查行未被检查

我有从Excel文件填充的DataGridView。 我添加复选框列到这个datagridview的DataGridview复选框列中的最后一次检查行未被检查

... 

dtSet.Tables[0].Columns.Add(new DataColumn("boolCol", typeof(bool)));

dgvInputFile.DataSource = dtSet.Tables[0];

dgvInputFile.AllowUserToAddRows = false;

后来我检查如果各行cheked:

for (int currentRow = 0; currentRow < grv.Rows.Count; currentRow++) 

{

DataGridViewCheckBoxCell CbxCell = dgvInputFile.Rows[currentRow].Cells["boolCol"] as DataGridViewCheckBoxCell;

bool valid = CbxCell != null && !DBNull.Value.Equals(CbxCell.Value) && (bool)CbxCell.Value == true;

....

如果我检查的第一行。然后valid=false为任何行。 如果我检查前2行。然后valid=true只适用于第一行。 如果我检查前3行。然后valid=true只适用于前两行。 似乎最后一行始终未被选中。但它是不好的。这不仅仅是当我从头开始检查的时候。

我尝试了第二种方法来确定行是否被检查并且结果是相同的。

(bool)dgvInputFile.Rows[currentRow].Cells["boolCol"].FormattedValue 

另外,如果我检查第一个,然后第二个,第三个和unceck第三个工作正常。

回答:

好的,我发现是什么原因导致了这种行为。 最后检查复选框仍然处于编辑模式,当我得到他的价值(bool)dgvInputFile.Rows[currentRow].Cells["boolCol"].FormattedValue

绝版我应该使用DataGridViewCell.EditedFormattedValue财产。

MSDN

Gets the current, formatted value of the cell, 

regardless of whether the cell is in edit mode

and the value has not been committed.

以上是 DataGridview复选框列中的最后一次检查行未被检查 的全部内容, 来源链接: utcz.com/qa/261333.html

回到顶部