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





на самом деле довольно просто
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;
}
}
но имейте в виду, что:
Rows cannot be programmatically removed unless the DataGridView is data-bound to an IBindingList that supports change notification and allows deletion
Строки нельзя удалить программно, если DataGridView не привязан к данным IBindingList, который поддерживает уведомление об изменении и разрешает удаление.
Если вы хотите удалить строки из 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 () после каждого изменения.
Ваше здоровье,
Андре карлуччи