如何删除用户取消添加过程时添加的DataGridView行?

时间:2008-10-16 09:19:00

标签: .net winforms datagridview

我有一个数据绑定DataGridView。添加新行并且用户按 Esc 时,我想删除整行。我怎么能这样做?

3 个答案:

答案 0 :(得分:5)

实际上很容易

private void dataGridView1_KeyPress(object sender, KeyPressEventArgs e)
{
    if (e.KeyChar == (char)27)
    {
        if (dataGridView1.Rows.Count > 0)
        {
            dataGridView1.Rows.RemoveAt(dataGridView1.Rows.Count - 1);
            MessageBox.Show("Last row deleted!");
        }
        e.Handled = true;
    }
}

但请注意:

  

除非DataGridView数据绑定到支持更改通知并允许删除的IBindingList,否则无法以编程方式删除行

答案 1 :(得分:5)

如果要从DataGrid中删除行,则必须使用BindingSource而不是列表,否则在执行时会出现异常。

试试这个:

public partial class YourForm : Form {

  private BindingSource _source = new BindingSource();

  public YourForm() {
    List<Model> list = _service.GetList();
    _source.DataSource = list;
    _grid.DataSource = _source;
  }
}

现在您可以使用您的数据源,网格将自行运行。每次更改后都不要忘记调用_grid.Refresh()。

干杯,

安德烈·卡鲁奇

答案 2 :(得分:-1)

除非DataGridView数据绑定到支持更改通知并允许删除的IBindingList,否则无法以编程方式删除行。