我在datagridview中有一个复选框列,如果我选中复选框,单元格值将被解析为文本框和组合框,如果不选中将清除所有文本框和组合框。
我已经实现了上面的描述,问题是当我检查它从底部到顶部的顺序,文本框的值不会改变。它将保持不变的第一次检查。
正如我下面的代码片段,文本框应该显示'AZI',因为我在'FRAN'后选中它,但它仍然显示'FRAN'。但如果选中的顺序是'AZI'然后'FRAN',它将正确地表现。
我已经提交了这篇文章How to clear textbox when all checkboxes are unchecked in DataGridView C#
下面是我目前的代码
private void datagridview1_CellContentClick(object sender, DataGridViewCellEventArgs e)
{
bool unSel = true;
foreach (DataGridViewRow row in datagridview1.Rows)
{
DataGridViewCheckBoxCell chk = (DataGridViewCheckBoxCell)row.Cells["ckbox"];
bool isSel = (bool)chk.EditedFormattedValue;
object cell = row.Cells["ckbox"].EditedFormattedValue;
unSel &= !Convert.ToBoolean(cell);
if (isSel)
{
combobox1.Text = row.Cells["combobox1"].Value.ToString();
textbox1.Text = row.Cells["textbox1"].Value.ToString();
textbox2.Text = row.Cells["textbox2"].Value.ToString();
textbox3.Text = row.Cells["textbox3"].Value.ToString();
}
}
if (unSel)
{
textbox1.Clear();
cbDoctorList.Text = "";
textbox2.Clear();
textbox3.Clear();
}
}
感谢您的帮助!
1条答案
按热度按时间monwx1rj1#
当你切换
DataGridViewCheckBoxCell
中的复选框时,它通常会将CurrentCell
置于编辑模式,新值不会被提交到单元格,直到DataGridView
以某种方式离开编辑模式。你可以尝试在复选框切换时立即结束编辑,看看先在你的点击处理方法中添加这段代码是否有帮助。
I tested此答案使用您的测试用例,其中选中的顺序是“FRAN”,然后是“AZI”,并且使用下面所示的最小样本按预期工作。