我有一个.NET Windows应用程序。
我有一个DataGridView
,里面有几行。我添加了一个包含按钮的列,以允许用户编辑一行。这会弹出一个新的表单/对话框 - 我的编辑表单。
// Add a CellClick handler to handle clicks in the button column.
dgv.CellClick += new DataGridViewCellEventHandler(dgv_CellClick);
触发此代码的代码是:
private void dgv_CellClick(object sender, DataGridViewCellEventArgs e)
{
if (e.ColumnIndex == buttonCell)
{
// Get the id number
int number = Convert.ToInt32(dgv.Rows[e.RowIndex].Cells[0].Value);
EditForm edit = new EditForm(number);
edit.ShowDialog();
}
}
问题
我的编辑表单显示(正确)。我进行了更改,并关闭了表单。然后它再次加载!它对我网格中的相同行数执行此操作。 IE浏览器。它为DataGrid中的每一行触发上面的代码一次。
我该怎样防止这种情况?有更优雅的解决方案吗?
答案 0 :(得分:2)
我会确保您不会多次注册CellClick
事件。
即,您不是多次调用此代码(例如每次向DGV添加一行时):
dgv.CellClick += new DataGridViewCellEventHandler(dgv_CellClick);
答案 1 :(得分:0)
要确定单击单元格内容的时间,请处理CellContentClick事件。
尝试使用dgv.CellContentClick,看看是否能解决问题。查看datagridview.cellclick event
的文档