我有未绑定的DGV ,我想在DGV Leave EventHandller上删除不需要的最后一行。怎么做?。
我知道通过编程方式将新行添加到dgv并设置属性AllowUserToAddRows = false。
但我的问题是:是否可以在不设置属性AllowUserToAddRows = false的情况下删除最后一行DGV。
OR
答案 0 :(得分:8)
将DataGridView AllowUserToAddRows
属性设置为False
。
但是,您必须提供一种允许用户输入新行的方法。例如,当用户双击DataGridView时,您可以将AllowUserToAddRows设置为true。然后当它们完成编辑时,将值设置回False。
添加新行:
假设您的DataGridView名为MyDataGridView,并且您有一个名为BtnAddRow的Button,当单击该按钮时,它会向DataGridView添加一个新行。
private void btnAddRow_Click(object sender, RoutedEventArgs e)
{
// Add an empty row
MyDataGridView.Rows.Add();
}
或者,您可以处理DataGridView OnDoubleClick
事件,您可以在其中调用MyDataGridView.Rows.Add()
添加新行。
答案 1 :(得分:2)
如果您的DataGridView绑定到DataSet,这可以删除当前行:
If DataGridView1.CurrentRow.IsNewRow Then
MyDataSet1.MyTable.Rows(DataGridView1.CurrentRow.Index).RejectChanges()
Else
DataGridView1.Rows.Remove(DataGridView1.CurrentRow)
End If
答案 2 :(得分:2)
您可以通过设置AllowUserToAddRows = false来删除数据网格视图中未提交的新行
grid.AllowUserToAddRows = false;
答案 3 :(得分:1)
我想删除DGV离开事件的最后一行。
只需在DataGridView.Leave
事件上附加处理程序并使用此代码:
private void MyHandler(object sender, EventArgs e)
{
int count = dgv.Rows.Count;
dgv.Rows.RemoveAt(count - 1);
}
编辑:您指的是DataGridView中显示的最后一个空行吗?如果是,则允许用户创建新行。要禁用此功能,请遵循Jean-Luis将AllowUserToAddRows
属性设置为false
的建议。
答案 4 :(得分:0)
从DataGridView
删除“最后”行时,我遇到了同样的问题。我这样解决了。
grid.Rows.RemoveAt(grid.Rows.Count - 2);
它会跳过最后一行,这是未提交的新行,如果您尝试将其删除,则会抛出异常。
要删除几行:
while (new_count < grid.Rows.Count - 1)
{
grid.Rows.RemoveAt(grid.Rows.Count - 2);
}
因此,无需设置AllowUserToAddRows = false
。