我想减少用户编辑错误记录的概率,所以一旦他们开始在datagridview中编辑一行我想隐藏所有行。
我试过了:
foreach (DataGridViewRow dgvr in rdGridView.Rows)
{
if (dgvr.Index != e.RowIndex )
{
dgvr.DefaultCellStyle.BackColor = Color.DarkGray;
dgvr.ReadOnly = true
}
}
但这并没有给予很多保护。
我可以更新DataView以仅显示该行并再次将数据视图分配给datgridview,但这会将焦点从单元格中移出,并且单元格不会进入编辑模式。
在上面的foreach循环中执行dgvr.Visible = false也会产生异常
答案 0 :(得分:0)
也许您应该尝试在DataGridView中加载数据,但是使用字段来加载要编辑的行中的数据。这样,您可以将DataGridView设置为ReadOnly,然后单击,您可以将数据从可编辑字段复制到文本框,允许用户编辑和保存。
答案 1 :(得分:0)
我会寻求更多不同的解决方案。双击一行(无论你打算编辑一行的整个单元格,无论哪个单元格)都打开一个新的Form(小窗口),里面有textBoxes和一个按钮Save。 textBoxes的数量取决于要编辑的列数。 因此,将所有数据从DGV传递到这个新表单的构造函数,并将数据传递给相应的textBoxes。
因此,您可以编辑从DGV分离的所有数据。顺便说一句,在显示新表单时,使用ShowDialog()方法,这将只创建这个新表单可编辑(在关闭它之前,用户将无法执行任何其他操作,只能在此表单上编辑数据)。
答案 2 :(得分:0)
找不到比将所有行都只读并将其变为灰色(正在编辑的那些除外)更好的东西。