C#winforms
我从对象列表中填充了DataGridView
。 DataGridView
设置为使用fullrowselect并关闭多选。
我在桌子上方有一个按钮,可以用来选择下一行。我在表格上方有一个Checkbox
,用于更改所选行的一个单元格中的数据。 button
和Checkbox
都可以独立完成。
我希望这样做,以便当他们检查Checkbox
时,它会更改所选行单元格中的数据,然后选择表格中的下一行。
无论我怎么做,我都会立即得到可重入的调用错误,或者当我稍后尝试再次选择该行时。
我尝试BeginInvoke
,BackGroundWorker
,使用计时器更改行选择,设置变量以记住行并在行选择更改后或行验证后更改值。每次尝试都会给我同样的错误。
我的代码太长了,无法在此发布,但我可以创建一个简单的应用来证明问题,如果需要。
请帮忙。
以下是代码:
private void chkDone_CheckedChanged(object sender, EventArgs e)
{
ProcedureCode proc = getCode(gridCodes.SelectedRows[0].Cells[3].Value + "");
proc.done = chkDone.Checked;
setPnlProgress();
if(chkDone.Checked)
{
btnNext_Click(sender, e);
}
}
private void btnNext_Click(object sender, EventArgs e)
{
int cRow = gridCodes.SelectedRows[0].Index;
if (cRow < gridCodes.RowCount - 1)
{
gridCodes.CurrentCell = gridCodes[0, cRow + 1];
}
}
以下是表格和复选框的屏幕截图:Click to see screenshot
第二个checkbox
标记的Done是更改所选行的单元格中的值的那个。第三个圈button
选择下一行。
答案 0 :(得分:0)
当我进入下一行以及用户点击复选框时,我发现复选框CheckChanged事件被触发了。我在行进入阶段添加了一个标记来跳过任何操作,这解决了重入错误。