【发布时间】:2019-01-23 01:12:17
【问题描述】:
我想在验证行后向 datagridview 添加一个新行。我在 RowValidated 事件中调用我的 AddNewRow 方法。但它给出“无法在此事件处理程序中执行操作”错误。
我的datagridview没有绑定任何数据源,并且AllowUsersToAddRow属性设置为false。
DataGridView 只有一列,名为“Cost”。
这是我的代码;
private void RMaterialDGV_RowValidating(object sender, DataGridViewCellCancelEventArgs e)
{
DataGridView dgv = sender as DataGridView;
if (dgv.IsCurrentRowDirty)
{
if(dgv.CurrentRow.Cells["Cost"].Value == null || dgv.CurrentRow.Cells["Cost"].Value.ToString().Length == 0
|| dgv.CurrentRow.Cells["Cost"].Value.ToString() == 0.ToString())
{
e.Cancel = true;
}
}
}
private void RMaterialDGV_RowValidated(object sender, DataGridViewCellEventArgs e)
{
DataGridView dgv = sender as DataGridView;
if (dgv.CurrentRow.Index == dgv.Rows.Count - 1 && dgv.CurrentRow.Cells["Cost"].Value != null)
{
if (dgv.CurrentRow.Cells["Cost"].Value.ToString().Length > 0)
AddNewRowToDGV();
}
}
private void AddNewRowToDGV()
{
int index = RMaterialDGV.Rows.Add();
RMaterialDGV.Rows[index].Cells["Cost"].Value = 0;
}
我使用此方法在(其他项目)之前添加新行,但从未收到这些错误。
我错过了什么?
提前致谢。
【问题讨论】:
-
哪一行代码出错了?
-
@ChetanRanpariya 感谢您的留言。 AddNewRowToDGV 方法内部给出错误; int index = RMaterialDGV.Rows.Add();
-
@C-PoundGuru 感谢您的留言。但是我几乎检查了互联网上关于这个问题的所有帖子。有重复的问题,但尚未给出有效答案。
标签: c# datagridview