我有一些空的datagridview,它使用的数据源是List to BindingSource。因为AllowUserToAddRows = true,所以最初datagridview有一个空行。当我只选择此行并关闭表单时,datagridview会创建新的空对象。它为什么这样做?怎么预防这个? 感谢。
选择空行: 我得到了这个:
结论:经过多次尝试寻找解决方案后,我决定使用datagridview和两个按钮(添加行和删除行)创建UI控件。在这一点上,我不再按计划做,但我仍然很高兴知道解决方案。
答案 0 :(得分:8)
您可以处理RowValidating
事件以验证行是否为空。如果是,则取消事件和行将不会被添加。
if (gridView[0, e.RowIndex].Value == null)
e.Cancel = true;
答案 1 :(得分:2)
我建议您确保不要在RowCount
,RowLeave
等事件处理程序中增加CellLeave
属性的值。
例如:
DataGridView1.RowCount += 1;
答案 2 :(得分:0)
在FormClosing事件处理程序中尝试显式清除DataSource。
private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
dataGridView1.DataSource = null;
}
保留在内存中的绑定可能会导致此问题。
答案 3 :(得分:0)
是的,DataGridView底部总会有一个空行。它允许用户在运行时添加新数据;他们所要做的就是开始输入新行。
要禁用它,您还需要阻止用户添加新行。通过将DataGridView控件的AllowUserToAddRows属性设置为False来执行此操作:
myDataGridView.AllowUserToAddRows = false;
答案 4 :(得分:0)
答案 5 :(得分:-2)
将DataGridView.AllowUsertoAddRows的属性设置为False。
或将其添加到Form_Load函数中:
dataGridView1.AllowUserToAddRows = false;