我想在验证行后向datagridview添加新行。我在RowValidated事件内部调用我的AddNewRow方法。但这会显示“无法在此事件处理程序中执行操作”错误。
我的datagridview没有任何数据源的限制,并且AllowUsersToAddRow属性设置为false。
DataGridView只有一列,名为“成本”。
这是我的代码;
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;
}
我使用此方法在其他项目之前添加新行,但从未收到这些错误。
我想念什么?
谢谢。
答案 0 :(得分:0)
当控件绑定数据时,不能以编程方式将行添加到DataGridView的行集合中。
相反,您可以将行添加到数据源。将您的AddNewRowToDGV方法更新为如下所示。
import pandas as pd
df = pd.DataFrame({'read': ["Red", "is", "my", "favorite", "color"]})
print(df)
read
0 Red
1 is
2 my
3 favorite
4 color
答案 1 :(得分:0)
我解决了创建数据表并将此数据表绑定到我的DataGridView的问题。但是我真的不明白是什么导致真正的问题。