我使用DataGridView控件通过XML序列化读取和写入XML文件.
我有一个问题,如下所述:
此后,不更新特定单元格的值.如果我故意将焦点移开(比如我点击同一网格上的另一个单元格),则更新该值.
任何人都可以建议任何解决方案吗?
Tho*_*que 16
这是因为编辑的单元格值在被验证之前没有提交给DataSource,这在单元格失去焦点时发生.如果要立即提交修改,可以处理CurrentCellDirtyStateChanged事件,并在处理程序中调用CommitEdit方法:
void dataGridView1_CurrentCellDirtyStateChanged(object sender,
EventArgs e)
{
if (dataGridView1.IsCurrentCellDirty)
{
dataGridView1.CommitEdit(DataGridViewDataErrorContexts.Commit);
}
}
Run Code Online (Sandbox Code Playgroud)
小智 16
最好的方法(虽然快速和脏)是分配currentCell值Nothing.
例如,在save方法中,执行以下操作:
dgvMyGrid.CurrentCell = Nothing
Run Code Online (Sandbox Code Playgroud)
然后继续前进.
如果我理解正确,单元格处于编辑模式,并且您试图以编程方式停止编辑并将值传递到底层数据源?
我在我的一个应用程序中使用了一种有点“肮脏”的方法来做到这一点:
if (dataGridView1.CurrentCell.IsInEditMode)
{
int y = dataGridView1.CurrentCellAddress.Y;
int x = dataGridView1.CurrentCellAddress.X;
if (y > 0)
dataGridView1.CurrentCell = dataGridView1.Rows[y - 1].Cells[x];
else
dataGridView1.CurrentCell = dataGridView1.Rows[y + 1].Cells[x];
dataGridView1.CurrentCell = dataGridView1.Rows[y].Cells[x];
}
Run Code Online (Sandbox Code Playgroud)
该代码首先检查当前单元格是否处于编辑模式。然后它以编程方式更改当前单元格(如果我们位于第一行,则更改为上一行或下一行)。之后,它恢复当前的单元格选择。
您可以在“文件另存为”处理程序中调用此代码。
| 归档时间: |
|
| 查看次数: |
14591 次 |
| 最近记录: |