Как удалить строку DataGridView, которая добавляется, когда пользователь отменяет процесс добавления?

У меня есть привязка данных DataGridView. Когда добавляется новая строка и пользователь нажимает Esc, я хочу удалить всю строку. Как я могу это сделать?


person Community    schedule 16.10.2008    source источник


Ответы (3)


довольно легко на самом деле

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, который поддерживает уведомление об изменении и разрешает удаление.

person balexandre    schedule 16.10.2008

Если вы хотите удалить строки из 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() после каждого изменения.

Ваше здоровье,

Андре Карлуччи

person andrecarlucci    schedule 08.09.2009

Строки не могут быть удалены программно, если только DataGridView не привязан к данным IBindingList, который поддерживает уведомления об изменениях и разрешает удаление.

person Community    schedule 25.03.2009