1

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

4

3 回答 3

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,否则无法以编程方式删除行

于 2008-10-16T09:50:36.137 回答
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()。

干杯,

安德烈·卡鲁奇

于 2009-09-08T12:59:59.853 回答
-1

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

于 2009-03-25T13:27:04.007 回答